- 相關(guān)推薦
學(xué)習(xí)C#的foreach迭代語(yǔ)句
C#語(yǔ)言提供的foreach語(yǔ)句是一個(gè)for語(yǔ)句循環(huán)的捷徑,而且還促進(jìn)了集合類(lèi)的更為一致,先來(lái)看看它的定義格式:
foreach語(yǔ)句的定義格式為:
foreach(類(lèi)型 變量 in 集合)
{
子語(yǔ)句;
}
每執(zhí)行一次內(nèi)嵌語(yǔ)句,循環(huán)變量就依次取集合中的一個(gè)元素代入其中,在這里,循環(huán)變量是一個(gè)只讀型局部變量,如試圖改變其值將會(huì)發(fā)生編譯錯(cuò)誤。
foreach語(yǔ)句用于列舉出集合中所有的元素,foreach語(yǔ)句中的表達(dá)式由關(guān)鍵字in隔開(kāi)的兩個(gè)項(xiàng)組成。in右邊的項(xiàng)是集合名,in左邊的項(xiàng)是變量名,用來(lái)存放該集合中的每個(gè)元素。
foreach語(yǔ)句的優(yōu)點(diǎn)一:語(yǔ)句簡(jiǎn)潔,效率高。
用一個(gè)遍歷數(shù)組元素的例子來(lái)說(shuō)明:
先用foreach語(yǔ)句來(lái)輸出數(shù)組中的元素:
int[,] ints =new int[2,3]{{1,2,3},{4,5,6}}; foreach (int temp in ints) { Console.WriteLine(temp); } Console.ReadLine();
再用for語(yǔ)句輸出數(shù)組中元素:
int[,] ints =new int[2,3]{{1,2,3},{4,5,6}}; for (int i = 0; i < ints.GetLength(0); i++) { for (int j = 0; j < ints.GetLength(1); j++) { Console.WriteLine(ints[i,j]); } } Console.ReadLine();
這兩種代碼執(zhí)行的結(jié)果是一樣的都是每行一個(gè)元素,共6行,元素分別是1 2 3 4 5 6。
在一維數(shù)組中還無(wú)法體現(xiàn)出foreach語(yǔ)句的簡(jiǎn)潔性,高效率性,但是在二維數(shù)組,甚至多維數(shù)組中體現(xiàn)的更為明顯和方便,所以在C#語(yǔ)言中要用循環(huán)語(yǔ)句提倡使用foreach語(yǔ)句。
foreach語(yǔ)句的優(yōu)點(diǎn)二:避免不必要的因素
在C#語(yǔ)言中使用foreach語(yǔ)句不用考慮數(shù)組起始索引是幾,很多人可能從其他語(yǔ)言轉(zhuǎn)到C#的,那么原先語(yǔ)言的起始索引可能不是1,例如VB或者Delphi語(yǔ)言,那么在C#中使用數(shù)組的時(shí)候就難免疑問(wèn)到底使用0開(kāi)始還是用1開(kāi)始呢,那么使foreach就可以避免這類(lèi)問(wèn)題。
foreach語(yǔ)句的優(yōu)點(diǎn)三:foreach語(yǔ)句自動(dòng)完成類(lèi)型轉(zhuǎn)換
這種體現(xiàn)可能通過(guò)如上的例子看不出任何效果,但是對(duì)于A(yíng)rrayList之類(lèi)的數(shù)據(jù)集來(lái)說(shuō),這種操作就顯得比較突出。
先用foreach語(yǔ)句來(lái)實(shí)現(xiàn)類(lèi)型轉(zhuǎn)換操作:在使用ArrayList類(lèi)時(shí)先要引入using System.Collections;
int[] a=new int[3]{1,2,3}; ArrayList arrint = new ArrayList(); arrint.AddRange(a); foreach (int temp in arrint) { Console.WriteLine(temp); } Console.ReadLine();
再來(lái)使用for語(yǔ)句來(lái)實(shí)現(xiàn):需要進(jìn)行顯式的強(qiáng)制轉(zhuǎn)換
int[] a=new int[3]{1,2,3}; ArrayList arrint = new ArrayList(); arrint.AddRange(a); for (int i = 0; i < arrint.Count;i++ ) { int n = (int)arrint[i]; Console.WriteLine(n); } Console.ReadLine();
兩個(gè)程序輸出的結(jié)果為:每一行一個(gè)元素,分別為1,2,3。
foreach語(yǔ)句對(duì)于string類(lèi)更是簡(jiǎn)潔:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace @foreach { class Program { static void Main(string[] args) { string str = "This is an example of a foreach"; foreach (char i in str) { if (char.IsWhiteSpace(i)) { Console.WriteLine(i);//當(dāng)i為空格時(shí)輸出并換行 } else { Console.Write(i);//當(dāng)i不為空格時(shí)只是輸出 } } Console.ReadLine(); } } }
輸出的結(jié)果為:每一行一個(gè)單詞,分別為T(mén)his, is ,an ,example ,of ,a ,foreach。
對(duì)于foreach語(yǔ)句的理解,目前也就知道這多了,隨著更深層次的學(xué)習(xí),或許會(huì)有更好的理解吧。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。