C#foreach語(yǔ)句概念及使用淺析
C# foreach語(yǔ)句是在C#中新引入的,在C和C++中沒有這個(gè)語(yǔ)句,而Visual Basic的程序員應(yīng)該對(duì)它不會(huì)陌生(for each)。它表示收集一個(gè)集合中的各個(gè)元素,并針對(duì)各個(gè)元素執(zhí)行內(nèi)嵌語(yǔ)句。C# foreach語(yǔ)句的格式為:
- foreach(type identifier in expression)embedded-statement
其中類型(type)和標(biāo)識(shí)符(identifier)用來聲明循環(huán)變量,表達(dá)式(expression)對(duì)應(yīng)集合。每執(zhí)行一次內(nèi)嵌語(yǔ)句,循環(huán)變量就依次取集合中的一個(gè)元素代入其中。在這里,循環(huán)變量是一個(gè)只讀型局部變量,如果試圖改變它的值或?qū)⑺鳛橐粋€(gè)ref或out類型的參數(shù)傳遞,都將引發(fā)編譯時(shí)的錯(cuò)誤。
C# foreach語(yǔ)句中的expresssion必須是集合類型,如果該集合的元素類型與循環(huán)變量類型不一致,則必須有一個(gè)顯示定義的從集合中的元素類型到循環(huán)變量元素類型的顯式轉(zhuǎn)換。
集合的概念相信大家都不陌生,它表示一組相同或相似的數(shù)據(jù)項(xiàng)總的描述。那么在C#中,究竟什么樣的類型算是集合類型呢?我們從語(yǔ)法上給出集合類型的定義:
◆該類型必須支持一個(gè)形為Getenumerator()的公有的非靜態(tài)方法,該方法的返回類型為結(jié)構(gòu)、類或接口。
◆形為GetEumerator()的方法返回的結(jié)構(gòu)、類或接口應(yīng)當(dāng)包含一個(gè)公有的非靜態(tài)的方法MoveNext(),該方法的返回類型為布爾型。
◆形為GetEumerator()的方法返回的結(jié)構(gòu)、類或接口應(yīng)當(dāng)包含一個(gè)公有的非靜態(tài)的屬性Current,該屬性可以讀出。
如果一個(gè)類型同時(shí)滿足以上三個(gè)條件,該類型稱為集合類型。Current屬性的類型叫作該集合類型的元素類型。
我們姑且不論集合類型的具體形式,只從foreach語(yǔ)句的使用角度舉一個(gè)例子。
假設(shè)Prime是一個(gè)滿足條件的集合類型,它的元素類型為0到1000以內(nèi)的質(zhì)數(shù)。MyInt是我們自定義的一個(gè)類型,其范圍為200到300之間的整數(shù)。下面這段程序用于在屏幕上打印出從200到300以內(nèi)的所有質(zhì)數(shù)。
- using System;
- using System.Collections;
- class Test
- {
- public static void Main()
- {
- Console.WriteLine("See the prime number:");
- foreach(MyInt x in Prime)
- Console.WriteLine("{0}",x);
- }
- }
順便說一句,數(shù)組類型是支持foreach語(yǔ)句的,對(duì)于一維數(shù)組,執(zhí)行順序是從下標(biāo)為0的元素開始,一直到數(shù)組的***一個(gè)元素;對(duì)于多維數(shù)組,元素下標(biāo)的遞增是從最右邊那一維開始的,依次類推。
同樣,break和continue可以出現(xiàn)在foreach語(yǔ)句中,功能不變。
C# foreach語(yǔ)句的基本概念以及格式就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)使用C# foreach語(yǔ)句有所幫助。
【編輯推薦】