这里不支持隐藏的原因

时间:2012-11-15 13:48:11

标签: c# scope

请参阅以下代码:

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#中发生错误,因为此处它不会执行变量隐藏&amp;给出错误:

无法在此范围内声明名为“j”的局部变量,因为它会为“j”提供不同的含义,“j”已在“父级或当前”范围内使用。

如果我们在c ++中运行上面的程序,它可以工作,在c ++中它支持在这种情况下的变量隐藏。

现在我的问题是,这背后的原因是什么?为什么C#开发人员决定不支持隐藏在这里。
为什么C ++允许隐藏在这里?

3 个答案:

答案 0 :(得分:3)

为了与C兼容,C ++保留了这样的东西。这在C中是允许的,因此在C ++中是允许的。

C#没有也不需要兼容性。所以这个“隐藏”被淘汰了。

答案 1 :(得分:2)

这些事情的答案总是一样的:因为没有人对该功能进行评估,指定,设计,实施,测试,记录,沟通,翻译和支持。在这种情况下,我想象的仅仅是因为没有实际的好处(你可以使用不同的变量名称,这样可以避免所有模糊问题),并且由于遗留原因,没有预先存在的功能。< / p>

答案 2 :(得分:0)

理由是,在同一个函数中有两个变量被认为是可能造成混淆和不必要的。