【问题标题】:C# iterate on two dimensional array of buttonsC#迭代二维按钮数组
【发布时间】:2014-06-02 18:25:46
【问题描述】:

我正在尝试迭代这样的二维按钮数组

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

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

我在做什么?

【问题讨论】:

  • foreach 迭代器是只读的,所以你不能给它赋值。

标签: c# arrays button


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 2014-03-27
      • 1970-01-01
      • 2012-10-22
      • 2011-12-28
      • 2015-04-04
      • 2014-05-30
      • 2020-06-09
      • 1970-01-01
      相关资源
      最近更新 更多