你可能不知道的switch
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相关推荐
- swift与OC之间不得不知道的21点
2019独角兽企业重金招聘Python工程师标准>>> swift与OC之间不得不知道的21点 原文 http://www.cnblogs.com/dsxniubility/p/4 ...
- 「从源码中学习」面试官都不知道的Vue题目答案
前言 当回答面试官问及的Vue问题,我们除了照本宣科的回答外,其实还可以根据少量的源码来秀一把,来体现出你对Vue的深度了解. 本文会陆续更新,此次涉及以下问题: "new Vue()做了什 ...
- 异步height:calc_异步:您尚不知道的承诺(第1部分)
异步height:calc This is a multi-part blog post series highlighting the capabilities of asynquence, a p ...
- 你可能不知道的children(React)
一.我以为的children children嘛,child的复数形式,所以顾名思义,某个组件的children(this.props.children/props.children)其实就是这个组件 ...
- ES6 你可能不知道的事 – 基础篇
ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...
- 考csp所需算法_CSP vs RxJS:您所不知道的。
考csp所需算法 by Kevin Ghadyani 通过凯文·加迪亚尼(Kevin Ghadyani) CSP vs RxJS:您所不知道的. (CSP vs RxJS: what you don' ...
- 苹果小圆点怎么关闭_苹果手机连按2下屏幕,就能自动截图,不知道的来学一学...
苹果手机连按2下屏幕,就能自动截图,不知道的来学一学 很多苹果用户都羡慕安卓手机,可以花式截屏,不仅支持局部截屏还可以长截屏. 其实苹果手机的截屏方式也可以很炫酷,今天就来教大家一招,连按2下手机屏幕 ...
- 那些你所不知道的arXiv使用技巧
作者:Tom Hardy Date:2020-12-23 来源:那些你所不知道的arXiv使用技巧
- 你可能不知道的Shell
Shell也叫做命令行界面,它是*nix操作系统下用户和计算机的交互界面.Shell这个词是指操作系统中提供访问内核服务的程序. 这篇文章向大家介绍Shell一些非广为人知.但却实用有趣的知识,权当品 ...
最新文章
- android中static方法,StaticLayout如何在Android中使用?
- ipsec在企业网中的应用(IKE野蛮模式)
- Expression,挑起2006年最后的争论?
- 从0开始搭建微信小程序(前后端)的全过程
- 10大亮点解读--极通EWEBS4.0
- 生物信息学分析选用的服务器,蛋白质与蛋白质组分析生物信息学
- rust卡在服务器列表不显示,rust服务器废料设置
- 深入分析Java中的length和length()
- 快递柜储物柜锁控制板
- 用RCircos包来画圈圈图
- NOI2022联合省选 题解
- 高效的学习方法(费曼学习方法)
- 爱创课堂vue视频资料
- 多元函数的向量表示_多元高斯分布完全解析
- 33MW太阳能厂动工 日本福岛开启复兴之路
- WELCOME THE NEW GAY
- (附源码)计算机毕业设计ssm Sketch2Mod网站
- dosbox全屏游戏花屏_DOSBox在今年圣诞节享受一些DOS游戏
- sun公司的java入门
- [亲情]那个深爱我的男子
热门文章
- zookeeper实现分布式锁的原理及具体使用案例
- Play Framework入门引导
- 【爬蟲】爬蟲概述、分類及運行原理
- div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...
- 【数据表间关联关系】 一对多、多对一、一对一、多对多
- pycharm中导入包失败,如何设置外部模块的路径
- linux父子进程同步实验,Linux-父子进程的简单同步
- go http 处理w.write 错误_go学习笔记-错误处理
- pytorch指定用多张显卡训练_Pytorch多GPU训练
- 启明云端方案分享| ESP32-S2 摄像头 WIFI方案应用于智能猫眼