C# 空引用异常数组2d
我得到了这个类,它有一个2dArray,当我试图填充它时,我得到了一个错误NullReferenceException:objectreference未设置为对象的实例 AdminGrid.FullNot(Int32行、Int32列、Int32全、System.String片段名称) 公共类AdminGrid:MonoBehavior{ 公共int numRows; 公共国际专栏; 私有int[,]阵列网格; //用于初始化 void Init(){ numColumns=6; numRows=6; ArrayGrid=newint[numRows,numColumns]; 对于(int y=0;yC# 空引用异常数组2d,c#,function,multidimensional-array,nullreferenceexception,C#,Function,Multidimensional Array,Nullreferenceexception,我得到了这个类,它有一个2dArray,当我试图填充它时,我得到了一个错误NullReferenceException:objectreference未设置为对象的实例 AdminGrid.FullNot(Int32行、Int32列、Int32全、System.String片段名称) 公共类AdminGrid:MonoBehavior{ 公共int numRows; 公共国际专栏; 私有int[,]阵列网格; //用于初始化 void Init(){ numColumns=6; numRows=
游戏开始时它会被调用,这就是为什么我很确定它被调用的原因。
ArrayGrid
是一个引用类型的字段,因此默认为空,所以我的结论很简单:您没有调用Init
。所以:调用Init
用AdminGrid重命名Init,一切都会好起来的)
在调用FullNot方法的地方,请添加代码您在任何时候调用过Init吗?在调用
Init
之前是否调用FullNot
?@Makenshi-正如其他人已经问过的那样-请在调用FullNot
的地方以及前面几行(如果可能,也在调用Init
的地方)发布代码。抱歉,我添加了我使用的引擎Unity,所以Init会自动调用,所以毫无疑问它会被调用,或者我认为它似乎只是打印了2个值。我很确定它会被调用it@Makenshi它叫什么名字?如果我被调用,数组将是非空的。这不是这里的参考;毫无疑问……好吧,错误是Init与另一个Init同时被调用,所以它用垃圾填充数组
public class AdminGrid : MonoBehaviour {
public int numRows;
public int numColumns;
private int[,] ArrayGrid;
// Use this for initialization
void Init() {
numColumns = 6;
numRows = 6;
ArrayGrid = new int[numRows,numColumns];
for(int y = 0;y < numRows;y++)
{
for(int x = 0;x < numColumns;x++)
{
ArrayGrid[y,x] = 0;
}
}
}
public void FullNot(int Row,int Column,int Full,string PieceName)
{
ArrayGrid[Row,Column] = 1;//Error is here
}
public int WhatsonGrid(int Row,int Col)
{
return ArrayGrid[Row,Col];
}
}
public AdminGrid()
{
...
}