不确定这是否是因为 C# 编译器非常挑剔,但我尝试在 C# 中执行此操作:
public static void Main()
{
bool result = true; // some dummy value
if(result)
{
int x = 5;
Console.WriteLine(x);
}
int x = 10;
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨变量名“x”已被使用:
不能在此作用域中声明名为“x”的局部变量,因为它会给“x”赋予不同的含义,而“x”已在“子”作用域中用于表示其他内容。
我知道它认为这是一个范围问题,但为什么它会这么认为呢?
如果我用 Java 重现相同的代码,就没有问题。