首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >局部变量范围误差-预测环

局部变量范围误差-预测环
EN

Stack Overflow用户
提问于 2014-04-05 11:05:35
回答 4查看 1K关注 0票数 5

我有以下代码:

代码语言:javascript
复制
if (Current == false)
{
    foreach (var visual in visuals)
        visual.IsSelected = value;
}

Visual visual = visuals[currentIndex];

当我编译时,会出现以下错误:

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

另外,如果我不声明visual变量,即替换:

代码语言:javascript
复制
Visual visual = visuals[currentIndex];

通过以下方式:

代码语言:javascript
复制
visual = visuals[currentIndex];

错误如下:

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

为什么会有这种行为?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-05 11:09:21

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

编译器对您指的是什么visual感到困惑。外部的还是内部的?

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

阅读更多关于它的这里

票数 1
EN

Stack Overflow用户

发布于 2014-04-05 11:09:19

为什么会有这种行为?

在第一个例子中,您已经在foreach循环中声明了名为visual的变量。

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

试试这个:

代码语言:javascript
复制
Visual visual1 = visuals[currentIndex];
票数 1
EN

Stack Overflow用户

发布于 2014-04-05 11:26:51

代码语言:javascript
复制
   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];

代码语言:javascript
复制
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];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22880018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档