我要做的是定义我自己的类型,其中包含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,但我无法发现任何事情。我确信这是一个相对简单的问题,但我没有足够的经验来确定它。
谢谢!
答案 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 ();
}
}