c#迭代二维数组的按钮

本文关键字:按钮 二维数组 迭代 | 更新日期: 2023-09-27 18:06:09

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

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

但我得到下一个错误:"错误不能分配给'按钮',因为它是一个'foreach迭代变量'"

我做错了什么?

c#迭代二维数组的按钮

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

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

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

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

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