如何初始化二维数组内的对象?

时间:2019-03-13 11:19:22

标签: c# multidimensional-array

我有一个二维数组

BoardTile tiles[,];

,然后在Init(Point size)中设置其大小:

tiles = new BoardTile[size.X, size.Y];

以及如何初始化所有这些元素,因为它不使用默认的BoardTile()构造函数。它只是分配null

foreach(BoardTile t in tiles) t = new BoardTile()

不起作用。而当我尝试致电

foreach(BoardTile t in tiles) t.anything()

我得到NullReferenceException

1 个答案:

答案 0 :(得分:5)

您可以尝试嵌套循环

  for (int i = 0; i < titles.GetLength(0); ++i)
    for (int j = 0; j < titles.GetLength(1); ++j)
      titles[i, j] = new BoardTile();

编辑:如果嵌套循环太复杂且难以理解,请尝试切换到锯齿状的数组,即数组-BoardTile tiles[][]; -来自 2D 的一个BoardTile tiles[,],例如

   // created and initialized jagged array
   BoardTile tiles[][] = Enumerable
     .Range(size.Y)                      // size.Y lines
     .Select(y => Enumerable             // each line is
        .Range(size.X)                   //   size.X items
        .Select(x => new BoardTile())    //   each of them is BoardTile()
        .ToArray())                      //   materialized as array
     .ToArray();                         // all arrays are array of array