【问题标题】:Transferring a list of a list to a 2D array将列表的列表传输到二维数组
【发布时间】: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


【解决方案1】:

考虑过数组数组吗?而不是TILArray[,],您将使用TILArray[][],它与您的列表一样,是一个数组数组。序列化器应该能够处理这个问题。

【讨论】:

  • 由于某种原因,我需要与此数组一起使用的方法只接受二维数组,因此我仍然需要在某些时候对其进行转换
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
相关资源
最近更新 更多