可能重复:
C# Variable Scoping
考虑以下代码:
void f()
{
if (condition)
{
B b = createB();
}
...
B b = getB();
}
我抱怨在子范围内已经定义的变量b。为什么是这样?第一个定义发生在嵌套范围内,外部范围不可见。我甚至无法访问外部作用域中先前声明的变量。那么编译器在这种情况下做了什么?
答案 0 :(得分:0)
尝试使用这段代码,编译器不会抱怨:
void f()
{
B b = null;
if (condition)
{
b = createB();
}
...
b = getB();
}
答案 1 :(得分:0)
它说明了它被创建两次的可能性。在第一行初始化变量,然后设置现在创建它的值。这意味着它只会被创建一次,但会带有与此相同的值。
编辑:请参阅FSX对代码的回答......这只是对其发生原因的解释。