要访问的嵌套foreach语句

本文关键字:foreach 语句 嵌套 访问 | 更新日期: 2023-09-27 18:16:36

谁能告诉我这段代码有什么问题?VS2012拒绝第二个foreach语句。

我得到

"type or namespace name 'grid' could not be found..." 

"invalid token 'foreach' in class..."  
public static void go(DataTable grid)
    {
        foreach (DataRow row in grid.Rows);
    }
           foreach (DataColumn col in grid.columns);
    }

我得到相同的错误:

public static void go(DataTable grid)
    {
        foreach (DataRow row in grid.Rows);
    }
           foreach (DataColumn col in row.columns);
    }

我的VS经常崩溃(实际上,这是我在Windows XP之前第一次看到真正的"蓝屏死机"),并且我有一些不寻常的行为,比如控件从窗体中消失。

那么,谁在遭受扭曲的代码逻辑,我还是VS?

要访问的嵌套foreach语句

嵌套的foreach块没有闭包:

应该是:

public static void go(DataTable grid)
{
    foreach (DataRow row in grid.Rows)
    {
        foreach (DataColumn col in row.columns)
        {
        }
    }
}

第二个foreach似乎只是随机放置在代码文件中。它需要在

函数内
        public static void go(DataTable grid)
        {
            foreach (DataRow row in grid.Rows)
            {
               foreach (DataColumn col in row.columns)
               {
               }
            }
        }

在第二个foreach之前有一个额外的}。那个是关闭方法,所以第二个foreach是方法定义之外的,这是一个语法错误。

如果没有适当的缩进,您的代码很难阅读,但是您的foreach不是嵌套的。也就是说,它们是完全分开的,所以'grid'对第二个foreach块是不可见的。