One:

int i = 0;

switch (i)
{
    case 0:
        Console.WriteLine("0");
    case 1:
        Console.WriteLine("1");
        break;
}

//在这里,想让i==0的时候执行

//Console.WriteLine("0"),然后"fall through"到下层执行Case 1。

//但是在C#中是不允许"fall through" 的。除非“case 0”一行语句都没有。

但是可以使用goto 语句来实现”fall through”

int i = 0;
switch (i)
{case 0:Console.WriteLine("0");goto case 1;case 1:Console.WriteLine("1");break;
}

在C#中每一个case xxx,都是一个标签,所以可以使用goto语句进行跳转。

Two:

在这里default语句不做任何事,但是没有加break;

提示如下:

C# 严格控制每一个Switch 的分支都不允许贯穿(“fall through”),例如有时候你可能会像下面这样:

该语句完全合法。

Three:

有时候你会在case里面定义变量,但是变量有可能重名,例如:

在case 0,和case 1 中定义了两个相同的变量 y,编译器会提示如下错误:

解决这个问题的方法很简单,加 “{}”,使Case 语句变成块语句。

当然,还有一种不为人知的解决方案,如下:

Four:

假设你有一个方法M,代码如下:

int M(bool b)
{switch (b){case true: return 1;case false: return 0;}
}

可以很明显的指导b 只有两个值,一个是true,一个是false,但是编译器却无法通过,提示:

因为编译器认为每一个switch结构都有可能执行,同时也认为都有可能不执行,但是方法M必须有int的返回值,所以编译器提示错误。

解决这个问题的方法也很简单:

int M(bool b)
{switch (b){case true: return 1;default: return 0;}
}

或:

int M(bool b)
{return b ? 1 : 0;
}

原文链接:Four switch oddities

转载于:https://www.cnblogs.com/qiuweiguo/archive/2011/08/16/2140156.html

你可能不知道的switch相关推荐

  1. swift与OC之间不得不知道的21点

    2019独角兽企业重金招聘Python工程师标准>>> swift与OC之间不得不知道的21点 原文  http://www.cnblogs.com/dsxniubility/p/4 ...

  2. 「从源码中学习」面试官都不知道的Vue题目答案

    前言 当回答面试官问及的Vue问题,我们除了照本宣科的回答外,其实还可以根据少量的源码来秀一把,来体现出你对Vue的深度了解. 本文会陆续更新,此次涉及以下问题: "new Vue()做了什 ...

  3. 异步height:calc_异步:您尚不知道的承诺(第1部分)

    异步height:calc This is a multi-part blog post series highlighting the capabilities of asynquence, a p ...

  4. 你可能不知道的children(React)

    一.我以为的children children嘛,child的复数形式,所以顾名思义,某个组件的children(this.props.children/props.children)其实就是这个组件 ...

  5. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  6. 考csp所需算法_CSP vs RxJS:您所不知道的。

    考csp所需算法 by Kevin Ghadyani 通过凯文·加迪亚尼(Kevin Ghadyani) CSP vs RxJS:您所不知道的. (CSP vs RxJS: what you don' ...

  7. 苹果小圆点怎么关闭_苹果手机连按2下屏幕,就能自动截图,不知道的来学一学...

    苹果手机连按2下屏幕,就能自动截图,不知道的来学一学 很多苹果用户都羡慕安卓手机,可以花式截屏,不仅支持局部截屏还可以长截屏. 其实苹果手机的截屏方式也可以很炫酷,今天就来教大家一招,连按2下手机屏幕 ...

  8. 那些你所不知道的arXiv使用技巧

    作者:Tom Hardy Date:2020-12-23 来源:那些你所不知道的arXiv使用技巧

  9. 你可能不知道的Shell

    Shell也叫做命令行界面,它是*nix操作系统下用户和计算机的交互界面.Shell这个词是指操作系统中提供访问内核服务的程序. 这篇文章向大家介绍Shell一些非广为人知.但却实用有趣的知识,权当品 ...

最新文章

  1. android中static方法,StaticLayout如何在Android中使用?
  2. ipsec在企业网中的应用(IKE野蛮模式)
  3. Expression,挑起2006年最后的争论?
  4. 从0开始搭建微信小程序(前后端)的全过程
  5. 10大亮点解读--极通EWEBS4.0
  6. 生物信息学分析选用的服务器,蛋白质与蛋白质组分析生物信息学
  7. rust卡在服务器列表不显示,rust服务器废料设置
  8. 深入分析Java中的length和length()
  9. 快递柜储物柜锁控制板
  10. 用RCircos包来画圈圈图
  11. NOI2022联合省选 题解
  12. 高效的学习方法(费曼学习方法)
  13. 爱创课堂vue视频资料
  14. 多元函数的向量表示_多元高斯分布完全解析
  15. 33MW太阳能厂动工 日本福岛开启复兴之路
  16. WELCOME THE NEW GAY
  17. (附源码)计算机毕业设计ssm Sketch2Mod网站
  18. dosbox全屏游戏花屏_DOSBox在今年圣诞节享受一些DOS游戏
  19. sun公司的java入门
  20. [亲情]那个深爱我的男子

热门文章

  1. zookeeper实现分布式锁的原理及具体使用案例
  2. Play Framework入门引导
  3. 【爬蟲】爬蟲概述、分類及運行原理
  4. div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...
  5. 【数据表间关联关系】 一对多、多对一、一对一、多对多
  6. pycharm中导入包失败,如何设置外部模块的路径
  7. linux父子进程同步实验,Linux-父子进程的简单同步
  8. go http 处理w.write 错误_go学习笔记-错误处理
  9. pytorch指定用多张显卡训练_Pytorch多GPU训练
  10. 启明云端方案分享| ESP32-S2 摄像头 WIFI方案应用于智能猫眼