【问题标题】:Why does this line throw an exception?为什么这一行会抛出异常?
【发布时间】:2011-12-05 08:43:31
【问题描述】:

我已经为此困扰了一段时间,这是我的代码:

TILArray = new string[Width, Height];
int t = 0;
TILArray[t, t] = "";
TILArray[t, t] = "";
for (int x = 0; x < Width; x++)
{
    for (int y = 0; y < Height; y++)
    {
        if (TILList[x][y] != null)
        {
            TILArray[0, 0] = TILList[x][y];
            Tiles[x, y] = Content.Load<Tile>(TILList[x][y]);
        }// This line throws the excetion
    }
}

抛出异常的那一行其实就是上面标注的右花括号。

TileEngine.dll 中出现“System.NullReferenceException”类型的未处理异常
附加信息:对象引用未设置为对象的实例。

【问题讨论】:

  • 这是发布模式还是调试模式?
  • 异常不会实际上出现在大括号上。 TILList 本身是非空的吗?
  • 如果在循环之外,一切正常
  • 这不是stackoverflow.com/questions/8352817/…的复制品吗?
  • 如果在 Visual Studio 中查看调用堆栈的组合;异常中的堆栈跟踪;以及您当前对象的实际实时值(在单步执行代码时),那么我相信您会发现错误。 NullReferenceException 将相当容易发现,因为变量将包含空引用。

标签: c# xna nullreferenceexception


【解决方案1】:

我的猜测是 Content 为 null 并且您在调用游戏的 LoadContent 方法之前或在您设置 Content 之前调用该方法。

确保您正确设置了Content 成员。这应该在默认游戏模板中为您完成。此外,请确保您在游戏的 LoadContent 方法之后(或之内)加载内容。

【讨论】:

  • +1。可悲的是,发帖者对标准命名约定的完全无知使得很难确定“内容”是变量还是类。
  • @annonymously:有一个内容成员(Game)。我从来没有提到过内容类。 (班级是ContentManager)。
  • @annonymously:我搞错了,因为你的问题有点不清楚。您可以接受自己的答案(等待期到期后)。
【解决方案2】:

我在设置宽度和高度时需要重新初始化 Tiles 数组 解决了它

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    相关资源
    最近更新 更多