- 零基礎(chǔ)C#學(xué)習(xí)筆記
- 明日科技編著
- 1024字
- 2021-03-12 20:01:00
4.3 switch 多分支語(yǔ)句
在開發(fā)中常見的一個(gè)問題是檢測(cè)一個(gè)變量是否符合某種條件,如果不符合,則再用另一個(gè)值來(lái)檢測(cè)它,依此類推。當(dāng)然,這種問題可以使用if 語(yǔ)句來(lái)完成。
例如,使用if 語(yǔ)句檢測(cè)變量是否符合某種條件。

在執(zhí)行上述代碼時(shí),每一條if 語(yǔ)句都會(huì)進(jìn)行判斷,這樣顯得非常煩瑣。為了簡(jiǎn)化這種編寫代碼的方式,C# 提供了switch 語(yǔ)句,將判斷動(dòng)作組織起來(lái),以一種比較簡(jiǎn)單的方式實(shí)現(xiàn) “多選一” 的邏輯。本節(jié)將對(duì)switch 語(yǔ)句進(jìn)行詳細(xì)講解。
4.3.1 switch 語(yǔ)句

switch 語(yǔ)句是多分支條件判斷語(yǔ)句,它根據(jù)參數(shù)的值使程序從多個(gè)分支中選擇一個(gè)用于執(zhí)行的分支,其基本語(yǔ)法如下。


switch 關(guān)鍵字后面的括號(hào)() 中的內(nèi)容是要判斷的參數(shù),參數(shù)必須是sbyte、byte、short、ushort、int、uint、long、ulong、char、string、bool 或枚舉類型中的一種。大括號(hào){}中的代碼是由多個(gè)case 子句組成的,每個(gè)case 關(guān)鍵字后面都有相應(yīng)的語(yǔ)句塊,這些語(yǔ)句塊都是switch 語(yǔ)句可能執(zhí)行的語(yǔ)句塊。如果符合常量值,則case 后面的語(yǔ)句塊就會(huì)被執(zhí)行,語(yǔ)句塊執(zhí)行完畢后,執(zhí)行break 語(yǔ)句,使程序跳出switch 語(yǔ)句;如果條件都不滿足,則執(zhí)行default 中的語(yǔ)句塊。
學(xué)習(xí)筆記
(1)case 后的各常量值不可以相同,否則會(huì)出現(xiàn)錯(cuò)誤。
(2)case 后面的語(yǔ)句塊可以有多條語(yǔ)句,不必使用大括號(hào)括起來(lái)。
(3)case 語(yǔ)句和default 語(yǔ)句的順序可以改變,這不會(huì)影響程序執(zhí)行結(jié)果。
(4)一個(gè)switch 語(yǔ)句中只能有一個(gè)default 語(yǔ)句,而且default 語(yǔ)句可以省略。
switch 語(yǔ)句的執(zhí)行流程圖如圖4.16 所示。

圖4.16 switch 語(yǔ)句的執(zhí)行流程圖
示例5.查詢高考錄取分?jǐn)?shù)線
使用switch 多分支語(yǔ)句實(shí)現(xiàn)查詢高考錄取分?jǐn)?shù)線的功能。其中,民辦本科為350 分、藝術(shù)類本科為290 分、體育類本科為280 分、二本為445 分、一本為555 分。代碼如下。


查詢高考錄取分?jǐn)?shù)線代碼的運(yùn)行結(jié)果如圖4.17 所示。

圖4.17 查詢高考錄取分?jǐn)?shù)線代碼的運(yùn)行結(jié)果
學(xué)習(xí)筆記
在使用switch 語(yǔ)句時(shí),常量表達(dá)式的值絕不可以是浮點(diǎn)類型的。例如,下面的代碼就是不合法的。


在Visual Studio 2017 中運(yùn)行上述代碼時(shí),將會(huì)出現(xiàn)如圖4.18 所示的錯(cuò)誤提示信息。

圖4.18 判斷參數(shù)為浮點(diǎn)類型時(shí)出現(xiàn)的錯(cuò)誤提示信息
(2)在使用switch 語(yǔ)句時(shí),每個(gè)case 語(yǔ)句或default 語(yǔ)句后面必須有一個(gè)break關(guān)鍵字,否則將會(huì)出現(xiàn)如圖4.19 所示的錯(cuò)誤提示信息。

圖4.19 缺少break 關(guān)鍵字時(shí)出現(xiàn)的錯(cuò)誤提示信息
4.3.2 switch 語(yǔ)句與if…else if…else 語(yǔ)句的區(qū)別

4.2.3節(jié)中講到的if…else if…else 語(yǔ)句也可以處理多分支選擇的情況,但它主要是對(duì)布爾表達(dá)式、關(guān)系表達(dá)式或邏輯表達(dá)式進(jìn)行判斷的,而switch 多分支語(yǔ)句主要對(duì)常量值進(jìn)行判斷。因此,在程序開發(fā)中,如果遇到多分支選擇的情況,并且判斷的條件不是關(guān)系表達(dá)式、邏輯表達(dá)式或浮點(diǎn)類型,就可以使用switch 語(yǔ)句代替if…else if…else 語(yǔ)句,這樣執(zhí)行效率會(huì)更高。
- JavaScript從入門到精通(微視頻精編版)
- GraphQL學(xué)習(xí)指南
- Android 7編程入門經(jīng)典:使用Android Studio 2(第4版)
- Groovy for Domain:specific Languages(Second Edition)
- 區(qū)塊鏈:以太坊DApp開發(fā)實(shí)戰(zhàn)
- Learning Firefox OS Application Development
- 深入淺出DPDK
- Lua程序設(shè)計(jì)(第4版)
- 概率成形編碼調(diào)制技術(shù)理論及應(yīng)用
- MySQL數(shù)據(jù)庫(kù)基礎(chǔ)實(shí)例教程(微課版)
- SQL Server 2016數(shù)據(jù)庫(kù)應(yīng)用與開發(fā)習(xí)題解答與上機(jī)指導(dǎo)
- 微服務(wù)從小白到專家:Spring Cloud和Kubernetes實(shí)戰(zhàn)
- 移動(dòng)互聯(lián)網(wǎng)軟件開發(fā)實(shí)驗(yàn)指導(dǎo)
- MySQL程序員面試筆試寶典
- 移動(dòng)增值應(yīng)用開發(fā)技術(shù)導(dǎo)論