当我试图用自己正在构造的对象填充数组时,我不知道为什么它告诉我对象为空。
public int size;
// Use this for initialization
public void Start()
{
size = 10;
Unit[,] array = new Unit[size,size];
int i, j;
for(i = 1; i<=size; i++)
{
for(j=0;j<size;j++)
{
if(i>=1&&j>=1)
{
array[i, j] = new Unit(array[i - 1, j].getHeight(), array[i, j - 1].getHeight());
}
else if(i>=1)
{
array[i, j] = new Unit(array[i - 1, j].getHeight(), 0);
}
else
{
array[i, j] = new Unit(0, 0);
}
}
}
for (i = 0; i <= size; i++)
{
for (j = 0; j <= size; j++)
{
Debug.Log(array[i,j].getHeight());
}
}
}
我要创建的对象来自构造函数;单位(整数,整数) 它说的是第23行。我假设这意味着该对象在数组中不存在,但是我正在创建对象,所以IDK
答案 0 :(得分:0)
我看到了两个错误,第一个错误是第一个for循环应该为for(i = 0; i<size; i++)
,因为c#的基数为0。这将为您提供null对象,因为当您尝试分配
if(i>=1&&j>=1)
{
array[i, j] = new Unit(array[i - 1, j].getHeight(), array[i, j - 1].getHeight());
}
当i = 1时,array[0,j]
从未分配(因为我从1开始),所以它的值为null。
另一个位于最后一组循环中,因为条件应为:
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
Debug.Log(array[i,j].getHeight());
}
}
由于C#的基数为0,因此索引从0
到size-1