尝试使用我的第一个用户定义类型时出现NullReferenceException

时间:2013-12-13 05:39:02

标签: c# arrays nullreferenceexception

我要做的是定义我自己的类型,其中包含2个int用于二维数组。应用程序使用数组索引作为二维空间中对象的x,y坐标进行显示。因此,存储在array[13,5]的数据的对象将显示在x = 13,y = 5,并且例如可以使用array[13,5].property1检索该对象的属性。我定义的类型非常简单:

chunkBlocks.cs:
public class chunkBlocks {
    public int blockType;
    public int isLoaded;
}

然后,我初始化数组:

chunkBlocks[,] _bData = new chunkBlocks[17, 17];

这一切都编译/运行没有错误。当我尝试为该类型的某个属性赋值时,抛出NRE。对于调试,我将代码编写为:

_bData[i, n].blockType = 5;

并且NRE专门针对.blockType部分。我已经尝试将类型更改为使用int的0值进行初始化,但无效:

public class chunkBlocks {
    public int blockType = 0;
    public int isLoaded = 0;
}

我用Google搜索并搜索了SO,但我无法发现任何事情。我确信这是一个相对简单的问题,但我没有足够的经验来确定它。

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要初始化数组的每个实例:

_bData[i, n] = new chunkBlocks();

现在为其分配值:

_bData[i, n].blockType = 5;

您必须初始化每个实例,您只需在数组中声明它们。

答案 1 :(得分:0)

我认为你应该这样做:

for(int i = 0;i<17;i++)
{
    for (int j = 0; j < 17; j++)
    {
         _bData[i, j] = new chunkBlocks ();
    }
}