- PEVR虛擬現(xiàn)實編輯平臺設(shè)計與實現(xiàn)精析
- 浙江優(yōu)創(chuàng)信息技術(shù)有限公司
- 1705字
- 2024-08-01 15:58:35
2.1.2 循環(huán)語句
循環(huán)語句可以實現(xiàn)一個程序模塊的重復(fù)執(zhí)行,它對于簡化程序、更好地組織算法有著重要的意義。C#提供了四種循環(huán)語句,分別適用于不同的情形:while語句、do-while語句、for語句、foreach語句。
2.1.2.1 while語句
while語句有條件地將內(nèi)嵌語句執(zhí)行0遍或若干遍,語句的格式為

它的執(zhí)行順序是:
1)計算布爾表達(dá)式boolean-expression的值。
2)當(dāng)布爾表達(dá)式的值為真時,執(zhí)行內(nèi)嵌語句embedded-statement一遍,程序轉(zhuǎn)至第1)步。
3)當(dāng)布爾表達(dá)式的值為假時,while循環(huán)結(jié)束。
下面來看一個簡單的例子,該例在數(shù)組中查找一個指定的值,如找到就返回數(shù)組下標(biāo),否則返回并報告。
程序清單 2-3:

while語句中允許使用break語句結(jié)束循環(huán),執(zhí)行后續(xù)語句;也可以用continue語句來停止內(nèi)嵌語句的執(zhí)行,繼續(xù)進(jìn)行while循環(huán)。
我們使用下面的程序片段來計算一個整數(shù)x的階乘值:

2.1.2.2 do-while語句
do-while語句與while語句不同的是:它將內(nèi)嵌語句執(zhí)行至少一遍。語句的格式為

它按如下順序執(zhí)行:
1)執(zhí)行內(nèi)嵌語句embedded-statement一遍。
2)計算布爾表達(dá)式boolean-expression的值,為true則回到第1)步,為false則終止do循環(huán)。在do-while循環(huán)語句同樣允許用break語句和continue語句實現(xiàn)與while語句中相同的功能。
我們看一下如何使用do-while循環(huán)來實現(xiàn)求整數(shù)的階乘:

2.1.2.3 for語句
for語句是C#中使用頻率最高的循環(huán)語句,在事先知道循環(huán)次數(shù)的情況下使用for語句是比較方便的。for語句的格式為

其中,initializer、condition、iterator這三項都是可選項:initializer為循環(huán)控制變量做初始化,循環(huán)控制變量可以有一個或多個(用逗號隔開);condition為循環(huán)控制條件,也可以有一個或多個語句;iterator按規(guī)律改變循環(huán)控制變量的值。應(yīng)注意初始化循環(huán)控制條件和循環(huán)控制都是可選的。如果忽略了條件,就會產(chǎn)生死循環(huán),要用跳轉(zhuǎn)語句break或goto才能退出。

for語句執(zhí)行順序如下:
1)按書寫順序?qū)nitializer部分(如果有的話)執(zhí)行一遍,為循環(huán)控制變量賦初值。
2)測試condition(如果有的話)中的條件是否滿足。
3)若沒有condition項或條件滿足,則執(zhí)行內(nèi)嵌語句一遍,按iterator改變循環(huán)控制變量的值回到第2)步執(zhí)行。
4)若條件不滿足則for循環(huán)終止。
下面的例子非常簡單,打印數(shù)字1到9,但它卻清楚地顯示出了for語句是怎樣工作的:

for語句可以嵌套使用,幫助我們完成大量重復(fù)性、規(guī)律性的工作。
下面的例子用于打印楊輝三角形:
程序清單 2-4:


運行程序的結(jié)果為

還以求整數(shù)的階乘為例,代碼可以這樣寫:

同樣可以用break和continue語句來和循環(huán)判斷符合語句中的邏輯表達(dá)式配合使用達(dá)到控制循環(huán)的目的。仍然以打印數(shù)字為例,如果要求打印除7以外的0到9之間的數(shù)字,只要在for循環(huán)執(zhí)行到7時,跳過打印語句就可以了。

2.1.2.4 foreach語句
foreach語句是在C#中新引入的,C和C++中沒有這個語句,而Visual Basic的程序員應(yīng)該對它不會陌生,它表示收集一個集合中的各元素,并針對各個元素執(zhí)行內(nèi)嵌語句。語句的格式為

其中,類型(type)和標(biāo)識符(identifier)用來聲明循環(huán)變量表達(dá)式(expression)對應(yīng)集合,每執(zhí)行一次內(nèi)嵌語句,循環(huán)變量就依次取集合中的一個元素,代入其中。在這里,循環(huán)變量是一個只讀型局部變量,如果試圖改變它的值或?qū)⑺鳛橐粋€ref或out類型的參數(shù)傳遞,都將引發(fā)編譯時錯誤。
foreach語句中的expression必須是集合類型,如果該集合的元素類型與循環(huán)變量類型不一致,則必須將集合中的元素類型顯式轉(zhuǎn)換為循環(huán)變量元素類型。
集合表示一組相同或相似的數(shù)據(jù)項總的描述。那么在C#中究竟什么樣的類型算是集合類型呢?我們從語法上給出集合類型的定義:
1)該類型必須支持一個形為GetEnumerator的公有的非靜態(tài)方法,該方法的返回類型為結(jié)構(gòu)類或接口。
2)形為GetEnumerator的方法,返回的結(jié)構(gòu)類或接口應(yīng)當(dāng)包含一個公有的非靜態(tài)的方法MoveNext,該方法的返回類型為布爾型。
3)形為GetEnumerator的方法,返回的結(jié)構(gòu)類或接口應(yīng)當(dāng)包含一個公有的非靜態(tài)的屬性Current,該屬性可以讀出。
如果一個類型同時滿足以上三個條件,該類型稱為集合類型,Current屬性的類型叫作該集合類型的元素類型。
我們姑且不論集合類型的具體形式,只從foreach語句的使用角度舉一個例子。假設(shè)Prime是一個滿足條件的集合類型,它的元素類型為1000以內(nèi)的質(zhì)數(shù),MyInt是我們自定義的一個類型,其范圍為200到300之間的整數(shù)。下面這段程序用于在屏幕上顯示出從200到300之間的所有質(zhì)數(shù):
程序清單 2-5:

順便說一句,數(shù)組類型是支持foreach語句的。對于一維數(shù)組執(zhí)行順序是從下標(biāo)為0的元素開始,一直到數(shù)組的最后一個元素。對于多維數(shù)組元素,下標(biāo)的遞增是從最右邊那一維開始的,依此類推。同樣break和continue可以出現(xiàn)在foreach語句中,功能不變。
- Learning SQL Server 2008 Reporting Services
- AutoCAD 2018實用教程(第5版)
- AJAX and PHP: Building Modern Web Applications 2nd Edition
- AI圖像處理:Photoshop+Firefly后期處理技術(shù)基礎(chǔ)與實戰(zhàn)
- 平面設(shè)計綜合教程:Photoshop+Illustrator+CorelDRAW +InDesign(微課版)
- Blender 2.5 Materials and Textures Cookbook
- Photoshop 2024從入門到精通
- ANSYS Workbench中文版超級學(xué)習(xí)手冊
- 從零開始:Illustrator CC中文版基礎(chǔ)培訓(xùn)教程
- Refactoring with Microsoft Visual Studio 2010
- Python Testing Cookbook
- 從零開始:Indesign CC 2019設(shè)計基礎(chǔ)+商業(yè)設(shè)計實戰(zhàn)
- Drupal 7
- Joomla! with Flash
- NumPy 1.5 Beginner's Guide