局部变量范围错误 - foreach 循环

Nic*_*ick 5 c# foreach scope

我有以下代码:

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

Visual visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

当我编译时,我有这个错误:

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

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

Visual visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

和:

visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

错误如下:

当前上下文中不存在名称“visual”

为什么会有这种行为?

Ami*_*oki 1

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

编译器对visual您所指的内容感到困惑。外层还是内层?

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

在这里阅读更多相关信息;