可能重复:
C# Variable Scoping
我遇到过以前从未遇到的事情。 我不是在寻找修复因为我知道如何解决它。我想知道的是编译器正在做什么。这只是示例代码:
if (true)
{
int x = 0;
}
int x = 0;
该代码产生错误“无法在此范围内声明局部变量'x',因为它会给'x'赋予不同的含义。”
但是,我将代码更改为:
if (true)
{
int x = 0;
}
x = 0;
我收到错误“无法解析符号'x'”。
那么,这里发生了什么? x是如何在范围内和超出范围?
答案 0 :(得分:5)
变量的范围是声明它的整个块。但是,在之后声明之前,你不能引用。
Eric Lippert对blog post有一个更详细的信息。编辑:正如埃里克指出的那样,another one ......
答案 1 :(得分:0)
它不是,只是因为C#允许你在程序中的任何地方声明/定义变量,它的作用域是声明它的整个块,所以它使x
预先声明/ {范围内)x
块中的if