【发布时间】:2011-12-02 07:01:19
【问题描述】:
好的,所以我正在尝试获取一个二维数组以在 xml 文件中序列化,然后能够加载它。主要部分有效,但我发现(可能是错误的)您不能在内容管道读取器和写入器中使用二维数组。我已经用List<List<string>> 替换了二维数组,但我仍然需要将数据作为二维数组。这是我到目前为止所拥有的,但它引发了一个空引用异常:
TILArray = new string[Width, Height];// I do initialize the array
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
if (TILList[x][y] != null)
{
Tiles[x, y] = Content.Load<Tile>(TILList[x][y]);
TILArray[x, y] = TILList[x][y];// This line throws the exception
}
}
}
如果我尝试分配它,它应该给我一个空引用异常吗? 另外,如果有人知道如何在内容管道读取器和写入器中直接使用二维数组,我将不胜感激
编辑:例外:
An unhandled exception of type 'System.NullReferenceException' occurred in TileEngine.dll
Additional information: Object reference not set to an instance of an object.
编辑:嗯,我一直在测试它,似乎它只在循环中抛出异常。当我尝试在循环外设置 TILArray[0,0] 时它工作正常,但在循环中它不起作用并引发异常。
编辑:哇,我刚刚发现如果我将引发异常的行移到此行之上:
Tiles[x, y] = Content.Load<Tile>(TILList[x][y]);
它说异常是在只包含}的行中引发的!
编辑:我做了更多测试,发现问题不在于复制到阵列。 当我注释掉引发异常的行时,它仍然会抛出它! 有什么东西会导致游戏从甚至没有任何代码的行抛出 NullReference 异常?
【问题讨论】:
-
TILList 是一个 List
- > ,所以我需要使用 TILList[x][y]
-
你能告诉我们这个例外吗?
-
异常发生在语句的末尾,因为如果你看,它发生在你的 TileEngine.dll 中。如果您创建了 TileEngine 库,您应该使用原始库代码设置一个测试项目并测试此功能。如果没有,您可能需要检查以确保您正确使用了该库。
-
我发布的代码是 TileEngine.dll 的一部分,所以我认为它不会有太大的改变
标签: c# list multidimensional-array xna xna-4.0