C#迭代二维数组按钮

时间:2014-06-02 10:23:21

标签: c# arrays button

我试图像这样迭代按钮的二维数组

Button[,] buttonsArray = new Button[row,col];
foreach(Button button in buttonsArray)
{
   button = new Button();
}

但我得到了下一个错误:“错误无法分配给'按钮',因为它是'foreach迭代变量'”

我在做什么?

2 个答案:

答案 0 :(得分:3)

编译器消息说明了一切 - 您正在尝试为button分配新值,但迭代变量(由foreach语句声明的变量)是只读的。 foreach循环只能用于迭代集合中的现有内容 - 它不能用于更改集合中的内容。 (请注意,如果更改集合引用的对象中的数据,则实际上并未更改集合中的值,这只是对象的引用。)

我怀疑你真的想要更像这样的东西:

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < col; j++)
    {
        buttonsArray[i, j] = new Button();
    }
}

答案 1 :(得分:1)

您无法在foreach循环中修改变量的值。为避免这种情况,您应该使用常规for循环:

for(int i = row; i < row; i++)
{
    for(int j = col; j < col; j++)
    {
       buttonsArray[i, j] = new Button();
    }
}