0

是否可以在数组中存储包含列表的类?

我在这个概念上遇到了一些麻烦。

这是我的代码:

我的班级称为“arrayItems”:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EngineTest
{
    [Serializable] //List olarak save etmemiz için bu gerekli.
    public class arrayItems
    {
        public List<items> items = new List<items>();
    }
}

这是我的名为“tileItems”的数组的定义:

 public static arrayItems[, ,] tileItems;

这是我创建数组的方式:

    Program.tileItems = new arrayItems[Program.newMapWidth, Program.newMapHeight, Program.newMapLayers];

我面临的问题是我的 Array 的内容为空。我收到了这个错误:

Object reference not set to an instance of an object.

当我尝试通过 Add() 命令填充数组内的列表时,我得到了同样的错误。

你能指引我正确的方向吗?提前致谢。

4

3 回答 3

6

您需要初始化数组中的每个列表:

for (int i = 0; i < newMapWidth; i++)
{
    for (int j = 0; j < newMapHeight; j++)
    {
        for (int k = 0; k < newMapLayers; k++)
        {
            arrayItems[i,j,k] = new arrayItems();
        }
    }
}

第一的。

于 2012-07-03T13:55:16.397 回答
2

You are creating and array of arrayItems, which is a reference type, because you defined it as a class. So when you initialize your array, all elements will be assigned null by default. That's why you get the error. You have to initialize each element of your array.

于 2012-07-03T13:59:53.710 回答
2

由于您已经在类定义中初始化列表,因此不需要重新初始化arrayItems循环内的列表属性。

您有一个数组,其中包含一堆指向任何内容的指针。所以你实际上需要先arrayItems在每个数组元素中创建一个新元素。

for (int i = 0; i < newMapWidth; i++)
{
    for (int j = 0; j < newMapHeight; j++)
    {
        for (int k = 0; k < newMapLayers; k++)
        {
            arrayItems[i,j,k]= new arrayitem();
        }
    }
}
于 2012-07-03T14:01:08.280 回答