初始化数组变量时出错

本文关键字:出错 变量 数组 初始化 | 更新日期: 2023-09-27 18:20:58

我很确定我已经初始化了所有内容,但它仍然抛出

"对象引用未设置为对象的实例。"

    Cell[,] cell;
    bool[,] UpdateCell;
    int AreaSizeX;
    int AreaSizeY;
    int MaxAge;
    public void Reset(int areaSizeX, int areaSizeY, int maxAge)
    {
        AreaSizeX = areaSizeX;
        AreaSizeY = areaSizeY;
        MaxAge = maxAge;
        cell = new Cell[AreaSizeX, AreaSizeY];
        UpdateCell = new bool[AreaSizeX, AreaSizeY];
        for (int i = 0; i < areaSizeX; i++)
        {
            for (int j = 0; j < areaSizeY; j++)
            {
                cell[i, j].Alive = false; //throws exception here #########
                cell[i, j].Age = 0;
                UpdateCell[i, j] = false;
            }
        }
    }

这个代码出了什么问题?C#不允许创建动态数组?

初始化数组变量时出错

我假设Cell是一个类(引用类型)。这意味着数组的元素是引用。您正在创建一个数组,但默认情况下所有元素都为null-。你可能想要:

for (int i = 0; i < areaSizeX; i++)
{
    for (int j = 0; j < areaSizeY; j++)
    {
        cell[i, j] = new Cell();
        cell[i, j].Alive = false;
        cell[i, j].Age = 0;
        UpdateCell[i, j] = false;
    }
}

或者你可以给你的Cell类一个考虑年龄和活力的构造函数:

for (int i = 0; i < areaSizeX; i++)
{
    for (int j = 0; j < areaSizeY; j++)
    {
        cell[i, j] = new Cell(false, 0);
        UpdateCell[i, j] = false;
    }
}

或者使用对象初始化器来设置属性:

for (int i = 0; i < areaSizeX; i++)
{
    for (int j = 0; j < areaSizeY; j++)
    {
        cell[i, j] = new Cell { Alive = false, Age = 0};
        UpdateCell[i, j] = false;
    }
}