- ASP.NET程序設計教程(第2版)
- 崔連和主編
- 2217字
- 2020-09-18 18:22:48
3.5 C#程序控制結構
C#語言與其他語言一樣,其控制結構有順序結構、選擇結構和循環結構三種。順序結構是由從上到下的語句逐條執行;選擇結構則類似路上的行人走在三岔路口,需要做出選擇的程序結構;而循環結構則在滿足條件的情況下周而復始地循環執行某段語句。
3.5.1 順序結構
順序結構是程序中使用最多的結構方式,也是程序中大量代碼存在的主要形式。
在順序結構中程序始終按照語句排列順序依次逐條地執行。順序結構的代碼示例如表3-19所示。
表3-19 順序結構實例

3.5.2 選擇結構
所謂選擇結構,是指在程序運行時,根據不同的條件轉向不同的語句執行,使得程序可以跳過某些語句不執行、轉而執行某些特定的語句。
選擇結構主要有if與switch兩種。其中,if主要用于簡單選擇判斷,共有四種形式;switch則主要用于多分支選擇判斷。
1.if語句
if語句是選擇結構中使用頻率最高的語句,其表現形式共有四種。
(1)格式1

執行時先判斷“條件表達式”的值,如果為true,則執行“語句”,否則什么也不做。“語句”部分既可以是單獨的一條語句,也可以是用{}括起來的多條語句組成的復合語句。
(2)格式2

執行時先判斷“條件表達式”的值,如果為true,則執行語句1,否則執行語句2。語句1和語句2即可以是一條語句,也可以是多條語句組成的復合語句。
(3)格式3

執行時先判斷條件表達式1的值,如果是true,則執行語句1;否則就判斷表達式2的值,如果是true,就執行語句2;否則就判斷條件表達式3……以此類推,繼續執行,直到最后一個else為止,如果前面的條件都不滿足,就執行語句n。語句既可以是一條語句,也可以是多條語句組成的復合語句。
(4)格式4(多層嵌套if語句)

執行時先判斷條件表達式1的值,如果是true,則接著判斷條件表達式2的值,如果是true,就執行語句2,否則就執行語句3;如果條件表達式1的值是false,就執行語句n。
在多層嵌套語句的編寫過程要特別注意大括號的一一對應,有幾個“{”就要有幾個“}”,每個else都和距它最近的if相匹配。
【操作實例3-8】 編寫一個簡單的登錄程序。
新建網站文件,在設計視圖中輸入三行文字,分別是用戶登錄、用戶名、密碼,在用戶名和密碼后面分別添加一個文本框,名稱是Text1Box1、Text1Box2,繼續添加兩個按鈕,并將其Text屬性分別改為“確定”“取消”,雙擊“確定”按鈕后添加如表3-20所示代碼。
表3-20 if結構實例

程序運行結果如圖3-6所示。

圖3-6 if結構實例運行結果
2.switch
C#中switch語句多用于多路分支選擇控制結構。當需要從多個備選項中選擇一個的時候,使用該語句。該語句格式如下。

switch語句在執行時首先計算表達式的值,然后與case語句中的各個常量表達式的值進行比較,如果相同,則執行該case后面的語句,直到執行break語句來結束switch語句。如果表達式的值與所有常量表達式的值均不匹配,則執行default語句塊。其中default部分是可選的。break語句的作用是在執行完一個case分支后,使程序跳出switch語句,并繼續執行switch后面的語句。C#規定:每個分支必須以break、return、goto或throw語句來結束,而且語句中的任何代碼不得改變表達式的值,否則編譯無法通過。
表達式的類型可以是整數類型(包括枚舉類型和字符類型)和字符串類型常量,而常量表達式類型必須與表達式類型相同,或者能隱式地轉換為表達式類型。表達式n的值必須是常量,且各case子句中的值應是不同的。如果多個case語句都執行同一個分支,則可以把多個case語句的表達式合并。例如:

一般情況下,switch語句總是可以和if語句互換。如果條件過多或者離散分布,建議使用switch語句,switch語句可以很清晰地把邏輯關系表達清楚。如果標簽數量較少,使用if語句會使程序比較簡潔。表3-20中if語句代碼就可以改寫為下面的switch語句代碼,如表3-21所示。
表3-21 switch結構實例

3.5.3 循環結構
循環結構的作用是反復執行一段代碼,直到滿足條件跳出循環為止。它共有以下四種格式。
1.格式1

語句既可以是一條語句,也可以是什么也沒有的空語句或由多條語句組成的復合語句,條件表達式作為循環的控制條件。執行過程是:首先判斷條件表達式,如果條件表達式的值為true,那么就執行語句;再次判斷條件表達式,直到條件表達式的值為false,則退出循環。因為該循環要先進行判斷,所以while循環的執行次數將會是0次或者多次。注意,在語句中要寫明循環的終止條件,以免造成死循環。
2.格式2

執行過程是:首先執行語句,然后判斷條件表達式,如果條件表達式的值為true,那么就再次執行語句;再次判斷條件表達式,直到條件表達式的值為false,則退出循環。與while語句不同的是,do…while語句先執行后判斷,所以do…while語句至少執行1次。
3.格式3

執行時先執行初始化表達式1,然后判斷條件表達式2,如果條件表達式2的值為true,那么就執行語句;接著執行迭代表達式3,并返回重新判斷條件表達式2,如果為true,再次執行語句,并執行迭代表達式3,重復執行,直至條件表達式2的值是false,結束for語句的執行。
以上三個表達式都是可選的,并且各個表達式可以有一個或多個。當省略某個表達式時,表達式后面的分號不能省略。for的使用示例如下。

4.格式4

該語句用于遍歷集合中的各個元素,并讓集合中的每一個元素都執行循環語句。其中,變量會依次代表“集合”中的每一個元素。如果不知道一個集合中每個項目的類型是什么,完全可以定義一個object類型的臨時變量來表示。in關鍵字后面指明需要操作的集合,且集合必須是可枚舉的,不能為空。語句的內容不能改變集合中的元素。
【操作實例3-9】 計算1~100的和,程序代碼如表3-22所示。
表3-22 用While計算1~100的和

程序運行結果如圖3-7所示。
該程序利用while循環計算1~100的和,并在屏幕輸出結果。

圖3-7 while循環實例運行效果