C# 尝试使用第一个用户定义类型时出现NullReferenceException
我想做的是定义我自己的类型,它包含2C# 尝试使用第一个用户定义类型时出现NullReferenceException,c#,arrays,nullreferenceexception,C#,Arrays,Nullreferenceexception,我想做的是定义我自己的类型,它包含2ints,用于二维数组。此应用程序使用数组索引作为要显示的二维空间中对象的x、y坐标。因此,具有存储在数组[13,5]中的数据的对象将显示在x=13,y=5处,并且可以使用数组[13,5]检索该对象的属性。例如,属性1。我定义的类型非常简单: chunkBlocks.cs: public class chunkBlocks { public int blockType; public int isLoaded; } 然后,我初始化数组: ch
int
s,用于二维数组。此应用程序使用数组索引作为要显示的二维空间中对象的x、y坐标。因此,具有存储在数组[13,5]
中的数据的对象将显示在x=13,y=5处,并且可以使用数组[13,5]检索该对象的属性。例如,属性1
。我定义的类型非常简单:
chunkBlocks.cs:
public class chunkBlocks {
public int blockType;
public int isLoaded;
}
然后,我初始化数组:
chunkBlocks[,] _bData = new chunkBlocks[17, 17];
_bData[i, n] = new chunkBlocks();
这一切编译/运行都没有错误。当我尝试为类型的某个属性赋值时,会抛出NRE。为了进行调试,我将代码编写为:
_bData[i, n].blockType = 5;
NRE专门抛出在.blockType
部分。我尝试将int
s的类型更改为使用0值初始化,但无效:
public class chunkBlocks {
public int blockType = 0;
public int isLoaded = 0;
}
我已经在谷歌上搜索了这么多,但没有找到任何东西。我相信这是一个相对简单的问题,但我没有足够的经验来确定它
谢谢 您需要初始化阵列的每个实例:
chunkBlocks[,] _bData = new chunkBlocks[17, 17];
_bData[i, n] = new chunkBlocks();
现在为其指定值:
_bData[i, n].blockType = 5;
您必须初始化每个实例,您只需在数组中声明它们。您需要初始化数组的每个实例:
chunkBlocks[,] _bData = new chunkBlocks[17, 17];
_bData[i, n] = new chunkBlocks();
现在为其指定值:
_bData[i, n].blockType = 5;
您必须初始化每个实例,您只是在数组中声明了它们。我认为您应该这样做:
for(int i = 0;i<17;i++)
{
for (int j = 0; j < 17; j++)
{
_bData[i, j] = new chunkBlocks ();
}
}
for(int i=0;i我认为您应该这样做:
for(int i = 0;i<17;i++)
{
for (int j = 0; j < 17; j++)
{
_bData[i, j] = new chunkBlocks ();
}
}
for(int i=0;i