Local variable scope error
I have the following code:
if (Current == false)
{
foreach (var visual in visuals)
visual.IsSelected = value;
}
Visual visual = visuals[currentIndex];
And when I compile I have this error:
A local variable named 'visual' cannot be declared in this scope because it would give a different meaning to 'visual', which is already used in a 'child' scope to denote something else
Also, if I don't declare the visual
variable, that is I replace:
Visual visual = visuals[currentIndex];
with:
visual = visuals[currentIndex];
the error is the following:
The name 'visual' does not exist in the current context
Why this behavior?
In the first case there is ambiguity between the variables declared outside and inside.(global and local).
The compiler is confused as to what visual
you are referring to. The outer one or inner one?
And in the second case, the compiler does not know what is visual
.
Read more about it here;
Why this behavior?
in your first case you have already declared the variable with name visual
in your foreach loop.
in your second case you can not use the keyword visual
because it does not exist. it is only available within your foreach loop.
Try This:
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/53050.html
上一篇: 为什么我不能在C#中的不同范围内声明一个具有相同名称的变量?
下一篇: 局部变量范围错误