Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: C# 变量范围
考虑这段代码:
void f() { if (condition) { B b = createB(); } ... B b = getB(); }
我收到一个错误,抱怨已在子范围中定义的变量 b。为什么是这样?第一个定义发生在外部范围不可见的嵌套范围内。我什至无法访问外部范围内先前声明的变量。那么在这种情况下编译器在做什么呢?
它解释了它被创建两次的可能性。在第一行初始化变量,然后在您现在创建它的位置设置值。这意味着它只会被创建一次,但如果它有效,它将携带相同的值。
编辑:请参阅 FSX 对代码的回答......这只是对它发生原因的解释。
试试这段代码,编译器不会抱怨:
void f() { B b = null; if (condition) { b = createB(); } ... b = getB(); }