官术网_书友最值得收藏!

4.3 switch 多分支語(yǔ)句

在開發(fā)中常見的一個(gè)問題是檢測(cè)一個(gè)變量是否符合某種條件,如果不符合,則再用另一個(gè)值來(lái)檢測(cè)它,依此類推。當(dāng)然,這種問題可以使用if 語(yǔ)句來(lái)完成。

例如,使用if 語(yǔ)句檢測(cè)變量是否符合某種條件。

img

在執(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ǔ)句

img

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

img
img

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 所示。

img

圖4.16 switch 語(yǔ)句的執(zhí)行流程圖

示例5.查詢高考錄取分?jǐn)?shù)線

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

img
img

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

img

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

學(xué)習(xí)筆記

在使用switch 語(yǔ)句時(shí),常量表達(dá)式的值絕不可以是浮點(diǎn)類型的。例如,下面的代碼就是不合法的。

img
img

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

img

圖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ò)誤提示信息。

img

圖4.19 缺少break 關(guān)鍵字時(shí)出現(xiàn)的錯(cuò)誤提示信息

4.3.2 switch 語(yǔ)句與if…else if…else 語(yǔ)句的區(qū)別

img

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ì)更高。

主站蜘蛛池模板: 辽源市| 腾冲县| 阿荣旗| 延寿县| 龙陵县| 鄂托克旗| 若尔盖县| 岚皋县| 孝义市| 平潭县| 黄石市| 武陟县| 肥东县| 兰西县| 老河口市| 钟山县| 广汉市| 伊春市| 黑河市| 宝鸡市| 治多县| 新津县| 镇平县| 中牟县| 汉沽区| 灵武市| 襄城县| 太谷县| 彝良县| 桦南县| 乌鲁木齐市| 宣武区| 定州市| 临夏县| 防城港市| 德化县| 寻甸| 大关县| 闵行区| 金堂县| 丘北县|