位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 流程控制分支 switch 語句

提問人:劉團(tuán)圓發(fā)布時間:2020-11-12

switch語句非常類似于if語句,因為它也是根據(jù)測試的值來有條件地執(zhí)行代碼。但是,switch語句可以一 次將測試變量與多個值進(jìn)行比較,而不是僅測試一個條件。這種測試僅限于離散的值,而不是像“大于X”這 樣的子句,所以它的用法有點不同,但它仍是一種強(qiáng)大的技術(shù)。 switch語句的越本結(jié)構(gòu)如下:

switch (〈testier〉)

{

    case <comparisonVall>:

        <code to execute if <testVar> 一一 <comparisonVall> > 

        break;

    case <comparisonVal2>:

        <code to execute if <testVar> == <comparisonVa12> > 

        break;

    . . .

    case <comp3risonVcilN>:

        <code to execute if <testVar> == <comparisonValN> > 

        break; 

    default:

         <code to execute if <testVar> != comparlsonVals> 

         break;

}

<testVar>中的值與每個值(在case語句中指定)進(jìn)行比較,如果有一個匹配,就執(zhí)行為該 匹配提供的語句。如果沒有匹配,但有default語句,就執(zhí)行default部分的代碼。

執(zhí)行完每個部分的代碼后,還需要有另一個語句break。在執(zhí)行完一個case塊后,再執(zhí)行第二個case語句 是非法的。

注意:

在此,C#與O+是有區(qū)別的s在C++中,可以在運行完一個case語句后,運行另一個case語句。

這里的break語句將中斷switch語句的執(zhí)行,而執(zhí)行該結(jié)構(gòu)后面的語句。

在C#代碼中,還有其他方法可以防止程序流程從一個case語句轉(zhuǎn)到下一個case語句??梢允褂胷etum語 句,中斷當(dāng)前函數(shù)的運行,而不是僅中斷switch結(jié)構(gòu)的執(zhí)行(詳見第6章)。也可以使用goto語句(如前所述), 因為case語句實際上是在C#代碼中定義的標(biāo)簽。例如:

switch (<testVar>)

{

    case <comparisonVall>:

        <code to execute if <testVar> == <comparisonVa11> >

        goto case <comparisonVa12> 7

    case <comparisonJ:

        <code to execute if <testVar> == <comparisonVal2> > 

        break;

    . . .

一個case語句處理完畢后,不能自由進(jìn)入下一個case語句,但這條規(guī)則有一個例外。如果把多個case語

句放在一起(堆疊它們),其后加一個代碼塊,實際上是一次檢查多個條件。如果滿足這些條件中的任何一個, 就會執(zhí)行代碼,例如:

switch (<testVar>)

{

case <comparisonVall>: case <comparisonVal2>:

<code to execute if <testVar> == <comparisonVall> or <testVar> == <comparisonVal2> >

break;

注意,這些條件也適用于default語句0 default語句不一定要放在比較操作列表的最后,還可以把它和case 語句放在一起。用break或return添加一個斷點,可確保在任何情況下,該結(jié)構(gòu)都有一條有效的執(zhí)行路徑。 在下面的示例中,將使用switch語句,根據(jù)用戶為測試字符串輸入的值,將不同字符串寫到控制臺。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部