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

Ski*_*lGG 3 c# multidimensional-array

我有一个二维数组

BoardTile tiles[,];
Run Code Online (Sandbox Code Playgroud)

然后Init(Point size)设置它的大小:

tiles = new BoardTile[size.X, size.Y];
Run Code Online (Sandbox Code Playgroud)

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

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

不起作用。当我尝试打电话时

foreach(BoardTile t in tiles) t.anything()
Run Code Online (Sandbox Code Playgroud)

我懂了NullReferenceException

Dmi*_*nko 5

您可以尝试嵌套循环

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

编辑:如果嵌套循环太复杂且难以理解,请尝试从2D one 切换到锯齿状数组,即数组array--例如BoardTile tiles[][];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 
Run Code Online (Sandbox Code Playgroud)