c# - switch 语句中的这个变量如何在没有声明的情况下看似使用?

标签 c# switch-statement variable-initialization

<分区>

Possible Duplicate:
C# switch variable initialization: Why does this code NOT cause a compiler error or a runtime error?

在这个 switch 语句中(令我惊讶的是编译和执行没有错误),变量 something 没有在情况 2 中声明,并且情况 1 永远不会执行。这怎么有效?变量 something 不声明怎么用?

switch(2){
 case 1:
  string something = "whatever";
  break;
 case 2:
  something = "where??";
  break;
}

最佳答案

那是因为 switch 语句的作用域是跨案例的。因此,当最初处理 switch 语句时,它定义了一个名为 something 的变量,并将具有其默认值……在本例中为 null

更准确地说,当生成 IL 时,变量在其定义或低于其定义的任何 case 范围内可用。因此,如果在第二个 case 中声明了一个变量,则它在第一个 case 中不可用,但在第三个 case 中可用。

关于c# - switch 语句中的这个变量如何在没有声明的情况下看似使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843711/

相关文章:

c# - 可空枚举不会触发 C# 中有效枚举值列表的智能感知

c# - 我将如何使用 System.DirectoryServices.Protocol 验证用户名/密码?

switch-statement - 如何使用函数指针而不是 switch 语句?

php - 哪种初始化 php 属性的方法更好?

c++ - CUDA 错误 : "dynamic initialization is not supported for __device__, __constant__ and __shared__ variables"

java - 为什么Java中变量必须初始化为默认值

c# - 如何从 DLL 中读取显示名称?

c# - 带有 gecko 浏览器的 Multi sock5?

switch-statement - 何时在 switch 语句上使用 If-else if-else ,反之亦然

c++ - 从 C++ 中的 switch case 返回二维数组