C#foreach变量作用域

这个问题在这里已经有了答案:

  • 为什么不能在嵌套的本地作用域中声明重复的变量名? 9个答案

  • 为什么不是第一个gridView变量只能在foreach循环范围内访问?

    它是,但编译器(语言定义)只是禁止重叠范围。

    产生相同错误的简化版本:

    {   // outer block, scope for the second `i`
    
        for(int i = 0; i < 10; i++)  // nested 'i', the first we see
        {
           // scope of first `i`  
        }
    
        int i = 3;  // declaration of a second `i`, not allowed
    }
    

    这很难读取get的原因是第二个'i'只能在其声明后使用,但其范围是整个外部块。

    请参阅C#语言规范,第3.7节:范围


    您提到要阅读的文章在这里并不重要,因为您没有关闭循环变量。

    会发生什么是你在封闭范围内有一个相同名字的变量。 这是不允许的(至少对于以方法开始的范围)。 如果您尝试在for循环中声明gridView或只是嵌套块,则会出现同样的问题。

    尽管如此,你可以使用相同的变量名相邻的两个循环,因为它们不重叠。 还要注意的是,变量作用域是由块决定的,即使只有在声明后才可以访问它们。 这意味着即使您的foreach循环在声明第二个gridView变量之前,它们的作用域也会重叠。

    链接地址: http://www.djcxy.com/p/1527.html

    上一篇: C# foreach variable scope

    下一篇: How does PHP 'foreach' actually work?