gpt4 book ai didi

C# 无法创建对象数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:30 25 4
gpt4 key购买 nike

我正在尝试创建一个二维对象数组(基本上是一个 XY 坐标系),但我不确定如何创建。我有一个创建 Tile 对象的 Map 类。在 Map 类的构造函数中,我编写了代码来创建 Tile 对象的二维锯齿状数组。

我不确定为什么这不起作用,之前我创建了 2D 锯齿状整数数组并且工作正常。

导致错误的原因是什么?我应该如何尝试创建对象数组?

这是我遇到的错误:

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
at ObjectArray.Map..ctor(Int32 NumberOfRows, Int32 NumberOfColumns) in C:\Use
rs\Lloyd\documents\visual studio 2010\Projects\ObjectArray\ObjectArray\Map.cs:li
ne 27
at ObjectArray.Program.Main(String[] args) in C:\Users\Lloyd\documents\visual
studio 2010\Projects\ObjectArray\ObjectArray\Program.cs:line 18

我的 Tile.cs

class Tile
{
public int TileID { get; set; }

}

还有我的 Map.cs:

class Map
{
private Tile[][] TileGrid;

public int Columns { get; private set; }
public int Rows { get; private set; }

public Map(int NumberOfRows, int NumberOfColumns)
{
Rows = NumberOfRows;
Columns = NumberOfColumns;


TileGrid = new Tile[NumberOfRows][];
for (int x = 0; x < TileGrid.Length; x++)
{
TileGrid[x] = new Tile[NumberOfColumns];
}

//Test for the right value.
TileGrid[0][0].TileID = 5;
Console.WriteLine(TileGrid[0][0].TileID);

}
}

最佳答案

这一行

TileGrid[x] = new Tile[NumberOfColumns];

创建给定长度的 null 引用数组。所以你需要迭代它并用一个对象初始化每个引用:

TileGrid = new Tile[NumberOfRows][];
for (int x = 0; x < TileGrid.Length; x++)
{
TileGrid[x] = new Tile[NumberOfColumns];
for (int y = 0; y < TileGrid[x].Length; y++)
{
TileGrid[x][y] = new Tile();
}
}

关于C# 无法创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18358299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com