switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(1)

程序代码中的switch语句以简洁明了的语法形式深受程序员喜爱,但是对初学者而言经常对其语法感到迷惑和不解,本次我们仔细聊一聊。

switch提供了一个直观的选择分支,它比if来的更加爽快,是一个快意恩仇的老铁。但是需要首先要认识由几个关键字组成的结构,才可以对症下药,让一切掌控在手中。

咱们从简单开始,一步步深入:

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(2)

常用基本结构,红色的是关键字

举个栗子

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(3)

其实流程还是比较简单的,有匹配项就执行,否则就不执行,default是没有任何匹配项情况下的默认匹配。但是在写代码时其中需要注意的弯弯绕可不少,一起整理一下:

关于小括号里的switch表达式类型

一般以int为主,还可以是sbyte、byte、short、ushort、uint、long、ulong、bool、char、string 或以后学习到的枚举类型。

小括号里的类型需要与case 后的常量类型要兼容(最好一致,省得隐式类型转换麻烦~)。

多个case后常量值必须要唯一

关于default

default是可选的,但是最多只有一个(代码语法的描述就是这么绕[严谨],你已经习惯了吗)。

在没有匹配的case时执行default后的代码块。

default和case的顺序没有要求,业界习惯将default放在最后,表示前面的case都已经努力过了(不合适就不能勉强)~~

关于break

大家可能发现了,每个case和default后代码块的最后都有一个break压阵。这也是C#语法的规定:case和default等switch节点之间是不能“贯穿”的(一种例外马上说),这与C和C 不同,这样也避免了很多由不经意地漏掉了 break 语句而引起的“血案”(前辈们有过的惨痛史~~)。大家在尝试时可以漏掉一个break试试,编译器会毫不留情的警告你。一种情况是例外的,如下:

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(4)

为了方便理解,这里的变量用了汉字

上例不违反“无贯穿”规则,因为case 2和case 3属于同一个switch部分(也就是他们执行同一个代码块)。

其他

除了break我们还有其他语法选择,比如goto case或者goto default,但是最后总得有个接盘侠结束才可。

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(5)

骚气的黄色

还有一种情况,后续我们会一一碰到,现在先记录下来,后续返回来看:

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(6)

条条大路通罗马,switch中不管是那条case,都是特定历史条件下的执行路线。路没有对错,就看谁走,到没到终点。

switch我的世界怎么分辨区块(你好世界CSharp语言中switch详解)(7)

做一行爱一行哈~

,