Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C++与C#对比学习:switch

平时碰到分支条件判断最常用的是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语句,不得万不得已少用了。