`
lovnet
  • 浏览: 6711196 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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语句,不得万不得已少用了.

分享到:
评论

相关推荐

    C#中一种替换switch语句更优雅的写法

    在项目中遇到了使用switch语句判断条件,但问题是条件比较多,大概有几十个条件,满屏幕的case判断,是否有更优雅的写法替代switch语句呢?  假设有这样的一个场景:商场经常会根据情况采取不同的打折方案,如果...

    浅析C#与C++相关概念的比较

    2、switch语句,C#中case后面可根字符串,如case “abc“,但在C++中却不行,C++中case后面只跟数字,字符,和枚举。 3、在C#中没有C++中的私有继承和保护继承,只有公有继承。 4、C#中可以通过关键字sealed把一个类...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    在一小时内学会 C#(txt版本)

    本文特别适合有 C++ 基础却没有太多精力学习 C# 的读者。 关于作者 Aisha Ikram 我现在在英国一家软件公司任技术带头人。我是计算机科学的硕士。我主要使用 .NET 1.1/2.0, C#, VB.NET, ASP.NET, VC++ 6, MFC, ...

    C#版编写的俄罗斯方块游戏

    C++是游戏编程的首选语言,但我相信C++能做到的C#也能做到。 本篇介绍用C#编写一个俄罗斯方块程序的原理,以及在C#里面播放声音,保存游戏设置的方法。 游戏界面预览: 菜单预览: 自定义每个小方块...

    脑力保健 微软,GOOGLE等试题试做 C#版

    C#求解(与C,C++思路不同的另一种思路) private int Fact(int n) { //1+2+…+n=n*(n+1)/2=(n^2+n)/2; int[,] array=new int[n,n]; int NPower2 = array.Length; //NPower2=n*n int iElement = NPower2 + n;//i...

    C#语法相比其它语言比较独特的地方(一)

    这在c,c++,java等其他各主流语言中都是不可以的,唯独c#可以。 例如string a=”haha”; 代码如下: switch(a) {  case “dfj”:  …  break;  case “djkfdjkf”:  ….  break;  case “haha”:

    C#教案基础加源代码。

    C#.NET是微软公司推出的一种类型安全的、现代的、简单的、由C和C++衍生出来的面向对象的编程序语言。掌握C#.NET的特点、程序结构、集成开发环境、C#语言的基本知识等,是利用好C#的前提。。using System; namespace...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 Windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用IDE 8 ...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    无论是刚开始接触面向对象编程的新手,还是打算转移到c#的具有c,c++或者java基础的程序员,都可以从本书中吸取到新的知识。 作译者 john sharp,content master首席技术专家。content master隶属于cm集团,cm集团...

    How.to.Become.a.Csharp.Programmer.B00QJ2TNB0.epub

    In fact, the power of C# and the easy-to-learn syntax persuaded many developers to switch to it from C++ or Java. The C# 2005 version (also referred to as C# 2.0) added even more powerful features to...

    C程序设计语言(第2版·新版中文)

    热门Tag JAVA C++ linux C# 教程 C语言 android 源码 PDF 编程 sql c Windows matlab ORACLE 源代码 api 中文 数据库 arm JavaScript 破解 数据结构 vc visual jQuery 计算机 答案 单片机 php JSP mfc .NET 中文版 ...

    C#快速入门.doc

    本文特别适合有 C++基础却没有太多精力学习 C#的读者。 目录 野比经验交流系列(C#) 前言 .................................................................................4 说明 ......................

    C#实现根据数字序号输出星期几的简单实例

    本文以实例代码实现了C#根据数字序号输出星期几,用户可通过输入数字0~6,输出星期各天的英语单词,程序中主要是演示if语句和switch语句的用法,当然其中的英文可以改成中文。 具体实现代码如下: //Select.cs程序...

Global site tag (gtag.js) - Google Analytics