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。
您可以尝试嵌套循环:
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)