看下面的代码:
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++允许隐藏在这里?
最佳答案
C++ 保留这样的东西是为了与 C 兼容。这在 C 中是允许的,因此在 C++ 中也是允许的。
C# 没有也不需要兼容性。所以这个“隐藏”被淘汰了。
关于c# - 为什么这里不支持隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398809/