【问题标题】:C# Unable to create array of objectsC# 无法创建对象数组
【发布时间】:2013-08-21 13:06:53
【问题描述】:

我正在尝试创建一个二维对象数组(基本上是一个 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);

    }
}

【问题讨论】:

    标签: c# arrays object


    【解决方案1】:

    这一行

    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();
        }
    }
    

    【讨论】:

      【解决方案2】:

      在你可以使用一个元素之前,你必须创建一个新元素......像这样:

      TileGrid[0][0] = new Tile();
      

      然后就可以使用了:

      TileGrid[0][0].TileID = 5;
      

      错误消息完全正确,您试图引用一个空的 Tile 位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 2010-12-25
        • 2014-11-07
        相关资源
        最近更新 更多