C#

为什么不能在嵌套的本地范围中声明重复的变量名?

发布于 2021-02-02 15:56:45

基于最近的问题,我不明白所提供的答案。似乎您应该能够执行这样的操作,因为它们的范围不会重叠

static void Main()
{
  {
    int i;
  }
  int i;
}

此代码无法编译,并出现以下错误:

不能在此范围内声明名为“ i”的局部变量,因为它将赋予“ i”不同的含义,“ i”已在“子”范围中用于表示其他内容

关注者
0
被浏览
94
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我不认为任何的答案至今已 相当 得到了规范的关键线。

    从8.5.1节开始:

    local-variable-declaration中声明 的局部变量的范围是 声明 所在 的块 。在文本位置引用局部变量的
    局部变量声明 符之前的 局部变量 是错误的。在局部变量的范围内,声明另一个具有相同名称的局部变量或常量是编译时错误。

    (强调我的。)

    换句话说,“较晚”变量的范围包括声明 之前 的块的一部分,即它包括包含“较早”变量的“内部”块。

    您不能在比其声明更早的位置 引用 后面的变量-但它仍在范围内。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看