C#8.0中的索引與范圍功能介紹
C#8.0中, 新增了一個(gè)索引與范圍的功能, 為訪問(wèn)序列中的單個(gè)元素或范圍提供了一種簡(jiǎn)潔的語(yǔ)法。
在沒(méi)有提供索引功能之前, 我們需要訪問(wèn)序列中的某個(gè)元素, 我們可以利用下標(biāo)或者部分函數(shù)進(jìn)行獲取元素的數(shù)據(jù), 如:獲取數(shù)組中最后一個(gè)元素:
string[] arr = new string[] { "冰晶鳳凰", "影流之主", "德瑪西亞", "艾瑞利亞", "寒冰射手" }; var str1 = arr.Last(); //寒冰射手 var str2 = arr[arr.Length - 1]; //寒冰射手
介紹索引
在使用的的過(guò)程中, 我們可以直接在數(shù)組集合類(lèi)的下標(biāo)中,直接聲明索引, 或者間接聲明Index 類(lèi)型的索引, 關(guān)于索引的使用方法, 如下:
string[] arr = new string[] { "冰晶鳳凰", //^5 "影流之主", //^4 "德瑪西亞", //^3 "艾瑞利亞", //^2 = ... "寒冰射手" //^1 =arr.Length-1 }; //^0 =arr.Length //使用索引 ^1 獲取最后一個(gè)元素 Console.WriteLine($"output:{arr[^1]}"); //output:寒冰射手 Console.WriteLine("-------End-------"); //創(chuàng)建索引 Index index=^1 獲取最后一個(gè)元素 Index index = ^1; Console.WriteLine($"output:{arr[index]}"); //output:寒冰射手 Console.WriteLine("-------End-------");
介紹范圍
8.0中, 提供了Range語(yǔ)法, 可以通過(guò)簡(jiǎn)單的語(yǔ)法聲明, 即可獲取到序列中的范圍內(nèi)所有元素, 而范圍中,也支持索引的聲明方式來(lái)創(chuàng)建范圍, 使用示例如下:
## 下標(biāo)中直接聲明范圍進(jìn)行獲取元素序列
//使用范圍 [0..2] 獲取索引0和1的元素,不包含末尾索引2的元素 string[] newarr = arr[0..2]; //冰晶鳳凰、影流之主 foreach (var r in newarr) { Console.WriteLine($"output:{r}"); } Console.WriteLine("-------End-------"); string[] index_range_xarr = arr[0..^1]; //指定開(kāi)始和結(jié)束范圍, 從0開(kāi)始到倒數(shù)第二個(gè) foreach (var r in index_range_xarr) { Console.WriteLine($"output:{r}"); //輸出: 冰晶鳳凰、影流之主、德瑪西亞、艾瑞利亞 } Console.WriteLine("-------End-------");
## 單獨(dú)創(chuàng)建Range進(jìn)行獲取元素序列
Range range = 0..2; //單獨(dú)聲明范圍 string[] newarr = arr[range]; //冰晶鳳凰、影流之主 foreach (var r in newarr) { Console.WriteLine($"output:{r}"); //輸出:冰晶鳳凰、影流之主 } Console.WriteLine("-------End-------");
## 不指定開(kāi)始與結(jié)束的范圍 (默認(rèn)獲取所有元素序列)
string[] index_default_arr = arr[..];// 寫(xiě)法相當(dāng)于 arr[0..^0], 獲取arr中所有的元素 foreach (var r in index_default_arr) { Console.WriteLine($"output:{r}"); //輸出: 冰晶鳳凰 、影流之主、德瑪西亞、艾瑞利亞、寒冰射手 }
## 指定開(kāi)始或者結(jié)束的范圍
string[] index_end_arr = arr[..^0];// 寫(xiě)法相當(dāng)于 arr[0..^0] , 獲取arr中所有的元素 foreach (var r in index_end_arr) { Console.WriteLine($"output:{r}"); //輸出: 冰晶鳳凰 、影流之主、德瑪西亞、艾瑞利亞、寒冰射手 } Console.WriteLine("-------End-------"); string[] index_left_arr = arr[^2..];// 寫(xiě)法相當(dāng)于 arr[^2..^0], 獲取末尾的最后兩個(gè)元素 foreach (var r in index_left_arr) { Console.WriteLine($"output:{r}"); //輸出: 艾瑞利亞 、寒冰射手 } Console.WriteLine("-------End-------");
注:范圍的結(jié)束如果有強(qiáng)制聲明, 如 [0..2] , 那么獲取的元素序列, 最終只是下標(biāo)為 0和1 的元素, 不包含2的元素, 也就是說(shuō)“末尾”不包含在范圍內(nèi)。
到此這篇關(guān)于C#8.0中的索引與范圍功能的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Unity實(shí)現(xiàn)文本轉(zhuǎn)貼圖
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)文本轉(zhuǎn)貼圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05WPF+ASP.NET SignalR實(shí)現(xiàn)后臺(tái)通知功能的示例代碼
本文以一個(gè)簡(jiǎn)單示例,簡(jiǎn)述如何通過(guò)WPF+ASP.NET SignalR實(shí)現(xiàn)消息后臺(tái)通知以及數(shù)據(jù)的實(shí)時(shí)刷新,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正2022-09-09- 這篇文章主要介紹了c#讀寫(xiě)注冊(cè)表示例,示例中有詳細(xì)注釋?zhuān)蠹覅⒖际褂冒?/div> 2014-01-01
automation服務(wù)器不能創(chuàng)建對(duì)象 解決方法
本文主要介紹如何解決“automation服務(wù)器不能創(chuàng)建對(duì)象”錯(cuò)誤,從而解決Visual Studio.Net不能正常使用的問(wèn)題,需要的朋友可以參考下。2016-06-06使用C#發(fā)送Http請(qǐng)求實(shí)現(xiàn)模擬登陸實(shí)例
本文主要介紹了使用C#發(fā)送Http請(qǐng)求實(shí)現(xiàn)模擬登陸實(shí)例,模擬登陸的原理簡(jiǎn)單,想要了解的朋友可以了解一下。2016-10-10最新評(píng)論