将列表列表传输到2D阵列

时间:2011-12-02 07:01:19

标签: c# list multidimensional-array xna xna-4.0

好的,所以我试图让一个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]);

它表示该异常仅包含}

Screenshot

编辑:我已经做了一些测试,发现问题不是复制到阵列。 当我注释掉引发异常的行时,它仍会抛出它! 是否有任何东西会导致游戏从甚至没有任何代码的行中抛出NullReference异常?

1 个答案:

答案 0 :(得分:0)

考虑了一系列数组?您可以使用TILArray[,]代替TILArray[][],{{1}}与列表一样,是一个数组数组。序列化器应该能够处理这个问题。