局部变量范围错误

我有以下代码:

if (Current == false)
{
    foreach (var visual in visuals)
        visual.IsSelected = value;
}

Visual visual = visuals[currentIndex];

而当我编译我有这个错误:

名为'visual'的局部变量不能在此范围内声明,因为它会给'visual'赋予不同的含义,'visual'已经在'child'范围内用于表示其他内容

另外,如果我不声明visual变量,那就是我替换:

Visual visual = visuals[currentIndex];

有:

visual = visuals[currentIndex];

错误如下:

名称'可视'在当前上下文中不存在

为什么会这样?


在第一种情况下,在外部和内部声明的变量(全局和本地)之间存在歧义。

编译器对于你指的是什么样的visual感到困惑。 外面的一个还是内部的?

而在第二种情况下,编译器不知道什么是visual

在这里阅读更多信息;


为什么会这样?

在你的第一种情况下,你已经在foreach循环中声明了名称为visual的变量。

在第二种情况下,您不能使用关键字visual因为它不存在。 它只在你的foreach循环中可用。

尝试这个:

Visual visual1 = visuals[currentIndex];

   if (Current == false)
    {
        foreach (var visual in visuals)
            visual.IsSelected = value;
    }

   // Parent and child scope have same variable name so it creates ambiguity.
    Visual visual = visuals[currentIndex];

if (Current == false)
    {
        foreach (var visual in visuals)
            visual.IsSelected = value;
    }

   // The variable visual in not defined outside the scope of if statement
    visual = visuals[currentIndex];
链接地址: http://www.djcxy.com/p/53049.html

上一篇: Local variable scope error

下一篇: Why doesn't C# allow me to use the same variable name in different scopes?