1

当我在Add方法期间运行此代码时,我在标题中收到错误。该Add方法应将游戏对象添加到名为 queue 的列表中。
GameObject是一类。
GameManager也是一个类。
queue是一个列表。

我认为这是唯一相关的代码。

    static void Main()
    {
        GameObject obj1 = new GameObject();
        GameManager manager1 = new GameManager();
        obj1.name = "First";
        manager1.Add(obj1);
        manager1.Process();
    }

    public void Add(GameObject gameObject)
    {
        gameObject.initialize = true;
        queue.Add(gameObject);
    }
4

3 回答 3

3

尝试初始化字段“队列”

  • 它可能从未初始化,因此Object Reference not set to an instance of an object error错误,该Add方法的结构可能对应于queue.

  • 另外-我会考虑将队列重命名为有意义的名称,因为它目前具有欺骗性。

这是一个初始化建议,它适用于您在问题中描述的 List ,但可以轻松修改为对应于 any IEnumerable,也可以在之前执行的不同方法中完成Main(再次,根据您的外观代码似乎不太可能):

private List<GameObject> queue; // assuming it's private, doesn't really matter either way.

static void Main()
{
    queue = new List<GameObject>(); // the missing line
    GameObject obj1 = new GameObject();
    GameManager manager1 = new GameManager();
    obj1.name = "First";
    manager1.Add(obj1);
    manager1.Process();
}


public void Add(GameObject gameObject)
{
    gameObject.initialize = true;
    queue.Add(gameObject);
}
于 2013-07-09T20:02:46.473 回答
1

您必须先初始化队列列表

于 2013-07-09T20:02:24.243 回答
0

你需要调试你的代码。

我假设您使用的是 Visual Studio,如果是这样,请执行以下操作:

  1. 转到调试菜单。

  2. 单击例外... 选项。

应出现以下对话框:

在此处输入图像描述

注意:Common Language Runtime Exceptions 复选框被选中。

单击“确定”后,现在当您在代码或 .NET Framework 引发异常时调试代码时,调试器将在引发异常的行停止。这使得查找某些东西“破坏”的地方变得更加容易。

于 2013-07-09T20:04:18.637 回答