|
|
1
38
更新:这个问题被用作这篇博文的灵感来源;有关更多详细信息,请参阅。 http://ericlippert.com/2009/08/13/four-switch-oddities/
在其他各种答案中有许多混淆和错误陈述,但没有一个能真正解释为什么这是非法的。我将试图确定。
正确使用的术语是“ 声明空间 一种代码区域,其中不能声明两个不同的事物具有相同的名称 部分 块 做 由于OP的两个声明位于同一个声明空间中并且具有相同的名称,因此它们是非法的。 (是的,开关块 而且 定义了一个范围,但该事实与问题无关,因为问题是关于 声明的合法性 标识符查找的语义 .) 一个合理的问题是“为什么这是不合法的?”一个合理的答案是“那么,为什么它应该是”?你可以用两种方法中的一种。这是合法的:
或者这是合法的:
二者都 方式。C#的设计者选择了第二种方式,因为这似乎是更自然的方式。 开关案例不会创建自己的声明空间 为了进一步了解设计师们在这一天的想法,我必须让很多人了解他们十年前的想法——并让他们了解最终是一个微不足道的问题;我不会那么做的。 尤其 选择一种或另一种方式的令人信服的理由;两者都有优点。语言设计团队选择了一种方式,因为他们必须选择一种;他们选的那个对我来说很合理。 |
|
|
2
8
|
|
|
3
4
你也可以这样做:
|
|
|
4
2
因为案例不是块,所以没有表示范围的大括号。由于缺少更好的词,案例就像标签一样。
|
|
|
5
1
从C#8.0开始,您现在可以使用 switch expressions
|
|
|
6
-1
您可以在switch语句的范围之外声明变量。
|
|
dallin · 数组中的逗号运算符是否有名称? 12 年前 |