首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >for-loop中声明的变量是局部变量吗?

for-loop中声明的变量是局部变量吗?
EN

Stack Overflow用户
提问于 2011-11-03 17:04:35
回答 4查看 10.6K关注 0票数 133

我已经使用C#很长一段时间了,但我从来没有意识到以下几点:

代码语言:javascript
复制
 public static void Main()
 {
     for (int i = 0; i < 5; i++)
     {

     }

     int i = 4;  //cannot declare as 'i' is declared in child scope                
     int A = i;  //cannot assign as 'i' does not exist in this context
 }

那么为什么我不能在for块之外使用'i‘的值,如果它不允许我用这个名称声明一个变量呢?

我认为for循环使用的迭代器变量只在其作用域内有效。

EN

回答 4

Stack Overflow用户

发布于 2011-11-03 20:58:01

有一种方法可以在循环后在方法中声明和使用i

代码语言:javascript
复制
static void Main()
{
    for (int i = 0; i < 5; i++)
    {

    }

    {
        int i = 4;
        int A = i;
    }
}

你可以在Java中做到这一点(它可能起源于C,我不确定)。当然,由于变量名的缘故,它有点凌乱。

票数 13
EN

Stack Overflow用户

发布于 2011-11-03 17:11:51

考虑这一点的最简单方法是将i的外部声明移到循环之上。到那时,它应该变得显而易见了。

这两种方法的作用域都是相同的,因此不能这样做。

票数 5
EN

Stack Overflow用户

发布于 2011-11-03 17:13:18

而且,C#的规则在很多时候并不是严格编程所必需的,但它们的存在是为了保持代码的整洁和可读性。

例如,他们可以这样做,如果你在循环之后定义它,那么它是可以的,然而,阅读你的代码并错过定义行的人可能会认为它与循环的变量有关。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7992332

复制
相关文章

相似问题

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