Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用第一个用户定义类型时出现NullReferenceException_C#_Arrays_Nullreferenceexception - Fatal编程技术网

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

C# 尝试使用第一个用户定义类型时出现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

我想做的是定义我自己的类型,它包含2
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