存储阵列中的列表

时间:2012-07-03 13:49:48

标签: c# arrays list object reference

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

我对这个概念有些麻烦。

这是我的代码:

My Class被称为“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的内容为null。 我收到了这个错误:

Object reference not set to an instance of an object.

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

请你指点我正确的方向吗? 提前致谢。

3 个答案:

答案 0 :(得分: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();
        }
    }
}

第一。

答案 1 :(得分:2)

您正在创建arrayItems的数组,它是一种引用类型,因为您将其定义为类。因此,在初始化数组时,默认情况下会为所有元素分配null。这就是你得到错误的原因。您必须初始化数组的每个元素。

答案 2 :(得分:2)

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

你有一个数组有一堆指向什么的指针。所以你实际上需要先在每个数组元素中输入一个新的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();
        }
    }
}