歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++與C#對比學習:switch

C++與C#對比學習:switch

日期:2017/3/1 10:10:55   编辑:Linux編程

平時碰到分支條件判斷最常用的是if else語句,不過有時要是分支條件太多用switch就更直觀,方便一點.先舉兩個簡單的例子.

C++:

int num = 2;

switch(num)

{

case 1:cout<<"one";break;

case 2:cout<<"two";break;

case 3:cout<<"three";break; //break可省略

default:cout<<"default";break; //default 非必須,可以省略

}

C#:

int num = 2;

switch (num)

{

case 1: Console.WriteLine("one"); break;

case 2: Console.WriteLine("two"); break;

case 3: Console.WriteLine("three"); break; //break不能省略

default: Console.WriteLine("default"); break; //default 可省略.

}

C++,C#中swith的用法幾乎是一模一樣了.只有一些細小的差別,C#在C++的基礎上做了一點改進.

區別:

1. C++中switch()括號中的變量類型只能是整形或者能默認轉換成整形.比如int,long,bool,char,enum.(當然表達式也行,只要結果符合前面條件).但float,double,string就不行.另外自定義的類型,比如某個class,如果類中有運算符重載,class能默認轉換成int.那也可以.不過大部分時候還少會在switch中用到自定義的類型吧

C#中switch()括號中的變量類型可以是byte,short,int,long,bool,enum另外還有string,這個在C++中是不行的.跟c++一樣,可以用表達式,但float,double是不行的.自定義類型如可轉換也行.

2. C++中break是可以省略的.但這樣容易造成一個問題.如果沒有break當某個分支符合條件執行完了後,會接著執行後面的分支.在上面的例子中,如果break全部去掉.結果會是twothreedefault

而C#要你強制性使用break,不用的話在編譯時就會報錯.這樣就不會犯C++中因忘記寫break而出現的錯誤.

補充:其實也可以用return替換break.只不過return是表示退出整個函數,而break只是退出switch這個語句塊.

如果switch的語句塊中的邏輯比較復雜還可以綜合使用goto語句.

比如

int num = 2;

bool check = false;

switch (num)

{

case 1: Console.WriteLine("one"); break;

case 2: Console.WriteLine("two"); goto label;

case 3: Console.WriteLine("three"); break;

label: default: Console.WriteLine("default"); break;

}

當然很多很多人都說過在寫代碼時盡量另用goto語句,不得萬不得已少用了。

Copyright © Linux教程網 All Rights Reserved