c# - 为什么这里不支持隐藏

标签 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#中出现错误,因为这里没有做变量隐藏,报错:

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

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

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

最佳答案

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

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

关于c# - 为什么这里不支持隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398809/

相关文章:

c# - 计算平均速度

c# - 如何在 Windows Phone 8.1 中更改内容对话框的标题样式

c# - Newtonsoft JsonConverter 将字符串或对象转换为对象

java - 如何隐藏公共(public)方法?

javascript - JavaScript 模块模式中的方括号符号和作用域

python - UnboundLocalError 继续弹出,我不明白为什么

c# - 在运行时访问资源

c# - 如何使用 Office interop 迭代 Word 文档中的段落项目?

c - C : Nested blocks 中的作用域规则

javascript - 如何从闭包中调用javascript类函数