Перенос списка из списка в 2D массив - PullRequest
0 голосов
/ 02 декабря 2011

Хорошо, поэтому я пытаюсь получить двумерный массив для сериализации в файле XML и затем загрузить его.Основная часть работает, но я обнаружил (возможно, ложно), что вы не можете использовать 2d-массив в программах чтения и записи конвейера контента.Я заменил 2d массив на List<List<string>>, но мне все еще нужны данные в виде 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] вне цикла, он работает нормально, но в цикле он не работает и выдает исключение.

Edit: WOW, я просто обнаружил, что еслиЯ перемещаю строку, которая выдает исключение над этой строкой:

Tiles[x, y] = Content.Load<Tile>(TILList[x][y]);

Это говорит о том, что исключение было сгенерировано в строке, содержащей только }!

Screenshot

РЕДАКТИРОВАТЬ: я провел еще несколько тестов и обнаружил, что проблема не в копировании массива. когда я закомментирую строку, выдавшую исключение, он все равно ее выбрасывает!Есть ли что-нибудь, из-за чего игра выдает исключение NullReference из строки, где даже нет кода?

1 Ответ

0 голосов
/ 02 декабря 2011

Рассматривали массив массивов?Вместо TILArray[,] вы бы использовали TILArray[][], который, как и ваш список, представляет собой массив массивов.Сериализатор должен справиться с этим.

...