- C#程序設(shè)計(jì)自學(xué)經(jīng)典
- 楊光
- 1740字
- 2021-03-19 17:22:23
3.3 跳轉(zhuǎn)語句的應(yīng)用
跳轉(zhuǎn)語句主要用于無條件地轉(zhuǎn)移控制到某個(gè)位置,這個(gè)位置就稱為跳轉(zhuǎn)語句的目標(biāo)。跳轉(zhuǎn)語句主要包括break語句、continue語句、return語句和goto語句4種。下面將對這幾種跳轉(zhuǎn)語句做簡單的介紹。
3.3.1 break跳轉(zhuǎn)語句
在之前講解的switch語句中用到了break語句,break break語句不僅可以使用在此,還可以把它用于for、while、do…while以及foreach循環(huán)語句中。break語句使程序跳出當(dāng)前循環(huán),并繼續(xù)執(zhí)行循環(huán)之后的代碼。當(dāng)break出現(xiàn)在嵌套循環(huán)語句中時(shí),break語句只能出現(xiàn)在最里層的語句中。如果要穿越多個(gè)嵌套語句,則必須使用goto語句。
下面通過一個(gè)小例子來講解下break語句的用法。
例3-6:break語句的使用(ConsoleBreak)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleBreak { class Program { static void Main(string[] args) { int num = 0; string[] strs = new string[] { "LiLei", "HanMeimei", "LinTao", "Kate", "Uncle Wang", "Jim", "Tom", "Lily", "Lucy", "Ann", "polly" }; foreach (string s in strs) { num++; if (s == "Tom") { Console.WriteLine("找到Tom了,他在編號" + num + "的位置!"); break; } Console.WriteLine("位置" + num + "處沒有Tom"); } Console.ReadLine(); } } }
運(yùn)行結(jié)果如圖3-14所示。

圖3-14 break語句的使用
此例使用foreach語句遍歷數(shù)組,查找“Tom”所在的位置,找到后使用break語句結(jié)束循環(huán)。
3.3.2 continue跳轉(zhuǎn)語句
continue語句與break語句類似,必須出現(xiàn)在for、while、do…while和foreach循環(huán)語句中,continue語句的作用是退出當(dāng)前循環(huán)結(jié)構(gòu)的本次循環(huán),并開始執(zhí)行下一次循環(huán),而不是退出當(dāng)前循環(huán)結(jié)構(gòu)。當(dāng)嵌套循環(huán)語句存在時(shí),continue語句只能使直接包含它的循環(huán)語句開始一次新的循環(huán)。
下面通過一個(gè)小例子來講解下continue語句的用法。
例3-7:continue語句的使用(ConsoleContinue)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleContinue { class Program { static void Main(string[] args) { for (int i = 1; i <= 10; i++) { if (i % 2 != 0) continue; Console.WriteLine(i); } Console.ReadLine(); } } }
運(yùn)行結(jié)果如圖3-15所示。

圖3-15 continue語句的使用
此例使用for循環(huán)語句,對循環(huán)變量i取余,如果余數(shù)不為0,則continue語句就終止當(dāng)前循環(huán),繼續(xù)下一次循環(huán),所以只輸出2、4、6、8、10。
3.3.3 return跳轉(zhuǎn)語句
return語句終止它出現(xiàn)在其中的方法的執(zhí)行并將控制返回給調(diào)用方法。它還可以返回一個(gè)可選值。如果方法為void類型,則可以省略return語句。
如果return語句位于try塊中,則將在控制流返回到調(diào)用方法之前執(zhí)行finally塊(如果存在)。
下面通過一個(gè)小例子來講解下return語句的用法。
例3-8:return語句的使用(ConsoleReturn)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleReturn { class Program { static void Main(string[] args) { while (true) { string num1, num2, choose; Console.WriteLine("請輸入一個(gè)數(shù)字(輸入“e”退出程序)"); num1 = Console.ReadLine(); if (num1 == "e") { break; } Console.WriteLine("請輸入另一個(gè)數(shù)字"); num2 = Console.ReadLine(); Console.WriteLine("請選擇要進(jìn)行的運(yùn)算:"); Console.WriteLine("1.+\t2.-\t3.*\t4./"); choose = Console.ReadLine(); Console.WriteLine("計(jì)算結(jié)果為:{0}", Operational(Convert. ToDouble(num1), Convert.ToDouble(num2), choose)); Console.WriteLine("——————————————"); } Console.WriteLine("您已經(jīng)成功退出,再見!"); Console.ReadLine(); } public static string Operational(double num1, double num2, string choose) { switch (choose) { case "1": return (num1 + num2).ToString(); case "2": return (num1 - num2).ToString(); case "3": return (num1 * num2).ToString(); case "4": return (num1 / num2).ToString(); default: return "輸入有誤!"; } } } }
運(yùn)行結(jié)果如圖3-16所示。

圖3-16 return語句的使用
此實(shí)例實(shí)現(xiàn)了一個(gè)簡易的加減乘除計(jì)算器的效果,代碼中根據(jù)輸入的choose值判斷做何種運(yùn)算,switch語句的每個(gè)case中使用return語句直接將轉(zhuǎn)為string類型后的計(jì)算結(jié)果返回了函數(shù)調(diào)用處,這又引出了case中的一種特殊情況——當(dāng)一個(gè)case中需要return語句時(shí),break語句要省略,因?yàn)閮烧吖泊鏇]有任何意義(位于后面的一個(gè)語句將永遠(yuǎn)無法被程序執(zhí)行到)。關(guān)于函數(shù)的相關(guān)知識將在后續(xù)章節(jié)進(jìn)行講解,此處不做具體講解。注意此實(shí)例未進(jìn)行異常處理,旨在講解return的用法。
3.3.4 goto語句
goto語句用于將控制轉(zhuǎn)移到事先定義的標(biāo)簽標(biāo)記的語句。goto語句可以應(yīng)用于switch語句中的case標(biāo)簽和default標(biāo)簽以及事先定義的標(biāo)記語句所聲明的標(biāo)簽。goto語句的三種形式及介紹如下。
goto case表達(dá)式:
goto case語句的目標(biāo)為它所在switch語句中的某個(gè)語句列表。
goto default:
goto default語句的目標(biāo)是它所在的switch語句的default標(biāo)簽。
goto 【標(biāo)簽】:
goto【標(biāo)簽】語句的目標(biāo)是具有給定標(biāo)簽的標(biāo)記語句。此用法可用于跳出多層嵌套循環(huán)語句。但是,不能使用goto語句從外部進(jìn)入循環(huán)。
下面通過一個(gè)小例子來講解下goto語句的用法。
例3-9:goto語句的使用(ConsoleGoto)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleGoto { class Program { static void Main(string[] args) { while (true) { Console.WriteLine("請輸入任意字符,(輸入"e"退出)"); string str = Console.ReadLine(); if (str == "e") goto exit; Console.WriteLine("您輸入了" + str); } exit: Console.WriteLine("您已經(jīng)成功退出循環(huán)!"); Console.ReadLine(); } } }
運(yùn)行結(jié)果如圖3-17所示。

圖3-17 goto語句的使用
此實(shí)例演示了goto【標(biāo)簽】的用法,當(dāng)輸出“e”時(shí),程序直接跳出了while循環(huán),并在定義為exit的標(biāo)簽處繼續(xù)執(zhí)行程序。
goto在使用時(shí)存在一些爭議,有人建議避免使用它,因?yàn)樗鼤騺y程序代碼的執(zhí)行順序,使程序代碼的可維護(hù)性較差,所以應(yīng)盡量避免使用goto語句。
3.3.5 各跳轉(zhuǎn)語句的區(qū)別
(1)break語句:跳出(終止)循環(huán)。
(2)continue語句:跳出(終止)當(dāng)前的循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。
(3)return語句:跳出循環(huán)以及其包含的函數(shù)。
(4)goto語句:可以跳出循環(huán)到已標(biāo)記好的位置上。
- JavaScript前端開發(fā)模塊化教程
- Apache Oozie Essentials
- Moodle Administration Essentials
- 小程序?qū)崙?zhàn)視頻課:微信小程序開發(fā)全案精講
- iOS 9 Game Development Essentials
- 自己動手寫Java虛擬機(jī)
- Flask Web開發(fā)入門、進(jìn)階與實(shí)戰(zhàn)
- Vue.js 3.0源碼解析(微課視頻版)
- Extending Puppet(Second Edition)
- jQuery炫酷應(yīng)用實(shí)例集錦
- Building Machine Learning Systems with Python(Second Edition)
- C語言程序設(shè)計(jì)與應(yīng)用(第2版)
- Zabbix Performance Tuning
- 嵌入式C編程實(shí)戰(zhàn)
- 算法超簡單:趣味游戲帶你輕松入門與實(shí)踐