好的,所以我试图让一个2D数组在xml文件中序列化然后能够加载它。主要部分有效,但我发现(可能是假的)你不能在内容管道读者和作者中使用二维数组。我用List<List<string>>
替换了2d数组,但我仍然需要将数据作为2d数组。这是我到目前为止,但它抛出一个空引用异常:
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
}
}
}
如果我试图分配它,它应该给我一个空引用异常吗? 此外,如果有人知道如何直接在内容管道阅读器和编写器中使用2d数组,我会很感激
编辑:例外:
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异常?
答案 0 :(得分:0)
考虑了一系列数组?您可以使用TILArray[,]
代替TILArray[][]
,{{1}}与列表一样,是一个数组数组。序列化器应该能够处理这个问题。