- C#實踐教程(第2版)
- 李乃文
- 2005字
- 2021-03-19 18:15:39
3.5 跳轉語句
跳轉語句用于中斷當前執行順序,從指定語句接著執行。在switch語句中曾使用跳轉語句中的break語句,中斷了當前的switch語句塊,執行switch后的語句。
跳轉語句同樣分為多種,其關鍵字及其使用特點如下所示。
□ break語句 break語句用于終止它所在的循環或switch語句。
□ continue語句 continue語句將控制流傳遞給下一個循環。
□ return語句 return語句終止它出現在其中的方法的執行,并將控制返回給調用方法。
□ goto語句 goto語句將程序控制流傳遞給標記語句。
3.5.1 break語句
3.2.4節曾將break語句用于switch語句塊,對break語句有了簡單了解。break有兩種用法:
□ 用在switch語句的case標簽之后,結束switch語句塊,執行switch{}后的語句。
□ 用在循環體,結束循環,執行循環{}后的語句。
循環有多種,任意一種循環都可以使用break跳出。接下來通過實例講述break語句與循環語句的結合。
【練習3-14】
851在100以內有兩個約數,23和37。找出100以內,851除了1以外的最小約數,語句如下:
int num=0; for (int i = 2; i < 101; i++) { if (851 % i == 0) { num = i; break; } } Console.Write(num);
運行結果為:23。說明循環在i=23時就結束了,否則i應該為37。break語句直接跳出了for循環而不是if選擇語句,也說明if選擇語句中不需要使用break跳轉。
3.5.2 continue語句
continue語句是跳轉語句的一種,用在循環中可以加速循環,但不能結束循環。continue語句與break不同之處在于:
□ continue語句不能用于選擇語句。
□ continue語句在循環中不是跳出循環塊,而是結束當前循環,進入下一個循環,忽略當前循環的剩余語句。
同樣是找出約數,將練習3-14改為找出100以內除了1以外的所有約數,如練習3-15所示。
【練習3-15】
找出100以內,除了1以外,851的所有約數,語句如下。
for (int i = 2; i < 101; i++) { if (851% i == 0) { num = i; Console.WriteLine(num); continue; } }
執行結果為:
23 37
練習3-15的例子中省略continue效果是一樣的,因為循環語句中continue語句后沒有語句,因此有沒有continue都將執行下一個循環。continue語句的使用效果如練習3-16所示。
【練習3-16】
輸出整型數1至30,但取消整數5的倍數的輸出,在執行到5的倍數時換行。使用語句如下所示:
for (int i = 1; i < 30; i++) { if (i % 5==0) { Console.Write("\n"); continue; } if (i < 10) { Console.Write(" {0} ", i); } else { Console.Write(i); Console.Write(" "); } }
執行結果如圖3-22所示。從執行結果看得出,在執行至continue語句后,“Console.Write(" {0} ", i);”語句和“Console.Write(i);”語句都沒有執行,數字5沒有輸出,而輸出了換行。

圖3-22 30以內的數字顯示
3.5.3 return語句
return語句經常用在方法的結尾,表示方法的終止。方法是類的成員,將在第5章中介紹。
方法相當于其他編程語言中的函數,是描述某一功能的語句塊。方法定義后并不是直接執行的,而是在其他地方使用語句調用的,如同變量在聲明后在其他地方被調用。
方法可以有返回值,在調用時將返回值傳遞給調用語句,也可以沒有返回值。返回值可以是常數,也可以是變量,由return語句定義返回值。
方法語句塊中,在return語句后沒有其他語句,但控制流并沒有結束,而是找不到接下來要進行的語句。使用return語句將控制流傳遞給調用該方法的語句,同時將返回值傳遞給調用語句。
方法的定義需要有訪問修飾符、返回數據類型、方法名稱和參數列表,以及方法中的語句塊。參數是方法中的變量,這些變量由調用它的語句來賦值,作為已經被初始化的數據來使用。
如定義一個方法power()將整型數字num求pow次方,該方法含有兩個參數,一個是整型數字num,另一個是該數需要獲取的乘方數pow,方法返回兩個數的計算結果,代碼如下:
public static int power(int num, int pow) { int newnum=1; for (int i = 1; i <= pow; i++) { newnum = newnum * num; } return newnum; }
上述代碼中,通過for循環將變量num乘了pow次,并將結果賦給newnum。最后一條語句使用return關鍵字返回運算結果newnum。
方法的調用需要指定方法中的參數,如調用該方法,計算12的10次方,則調用語句如下所示:
power(12,10);
如在Main()函數中調用該方法,輸出12的10次方計算結果,使用語句如下所示:
Console.WriteLine("數字12的10次方為{0}",power(12,10));
運行上述代碼,其結果如下所示。
數字12的10次方為61917364224
3.5.4 goto語句
goto語句是跳轉語句中最靈活的,也是最不安全的。goto語句可以跳轉至程序的任意位置,但欠考慮的跳轉將導致沒有預測的漏洞。goto語句也有限制:
□ 可以從循環中跳出,但不能跳轉到循環語句塊中。
□ 不能跳出類的范圍。
使用goto語句首先要在程序中定義標簽,標簽是一個標記符,命名同變量名一樣。標簽后是將要跳轉的目標語句,一條以內不用加{},超過一條則必須放在{}內,{}后不用加分號。如下所示:
label:{}
接著將標簽名放在goto語句后,即可跳轉至目標語句,如下所示:
goto label;
練習3-17簡單地顯示了goto語句的用法和格式,將控制流從循環中跳出。
【練習3-17】
輸出從1到10的整數,在輸出整數5時跳出,從整數5往后不再輸出,使用語句如下。
for (int i = 1; i < 11; i++) { Console.WriteLine(i); if (i == 5) { Console.Write("\n"); goto comehere; } } comehere: { Console.WriteLine("到5了,結束了"); }
除了跳出循環語句,goto語句另外一種用法是跳出switch語句并轉移到另一個case標簽,如練習3-18。
【練習3-18】
定義整型num表示第幾個季節,定義字符串title表示季節名稱,有如下的代碼:
int num = 4; string title=""; switch (num) { case 1: title = "春天"; break; case 2: title = "夏天"; break; case 3: title = "秋天"; break; case 4: title = "冬天"; goto case 2; } Console.WriteLine(title);
執行結果為:
夏天
由結果看出,因為num變量使用的是常數4,所以控制流將執行case 4,但在case 4中使用goto語句將控制流轉向了case 2,導致顯示結果為case 2中的夏天。case在這里起到了標簽的作用。
- Spring Cloud Alibaba微服務架構設計與開發實戰
- Java EE 7 Development with NetBeans 8
- R Data Analysis Cookbook(Second Edition)
- Advanced Express Web Application Development
- Solutions Architect's Handbook
- IBM Cognos TM1 Developer's Certification guide
- Drupal Search Engine Optimization
- MySQL數據庫應用實戰教程(慕課版)
- Python應用開發技術
- Android應用開發攻略
- HTML5 Canvas核心技術:圖形、動畫與游戲開發
- Android熱門應用開發詳解
- Android Application Programming with OpenCV 3
- ACE技術內幕:深入解析ACE架構設計與實現原理
- 計算機視覺增強現實應用平臺開發