要访问的嵌套foreach语句

时间:2013-06-03 23:54:30

标签: c# foreach

有人可以告诉我这段代码有什么问题吗? 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?

4 个答案:

答案 0 :(得分:3)

您的嵌套foreach块没有闭包:

应该是:

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

答案 1 :(得分:2)

第二个foreach似乎只是随机放在你的代码文件中。它需要在函数内部

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果没有适当的缩进,您的代码很难阅读,但您的foreach不是嵌套的。也就是说它们是完全分开的,因此第二个foreach区块看不到“网格”。