见下面的代码:
public static int Main()
{
int j = 20;
for (int i=0; i < 10; i++)
{
int j = 30; //can't do this
Console.WriteLine(j + i);
}
return 0;
}
C# 中发生错误,因为这里它不进行变量隐藏并给出错误:
不能在此范围内声明名为“j”的局部变量,因为它会给已在“父或当前”范围中使用的“j”赋予不同的含义。
如果我们在 c++ 中运行上面的程序,它可以工作,在 c++ 中它支持在这种情况下隐藏变量。
现在我的问题是,这背后的原因是什么?
为什么 C# 开发者决定不支持隐藏在这里。?
为什么 C++ 允许隐藏在这里?