Действительно базовая путаница в массиве C # - PullRequest
2 голосов
/ 03 октября 2011

Я делаю базовый 2D-массив в C #, и у меня возникает путаница.

Я гораздо больше привык работать с массивами на основе 1, поэтому массивы на основе 0испортить мне голову, если вы понимаете, о чем я.

blocks = new Block[15, 999];

for (int x = 0; x <= 15; x++)
{
    for (int y = 0; y <= 999; y++)
    {
        blocks[x, y] = new Dirt(terrainTexture, new Vector2(x * 16, y * 16));
    }
}

Значит, он говорит, что я вышел за границы массива?1009 * 0-15, 0-999

Не должен ли цикл с 0-15, 0-999 работать?

Ответы [ 2 ]

10 голосов
/ 03 октября 2011

Это не так.999 - длина массива.Таким образом, это с 0-998, и когда вы зацикливаетесь на нем, вы должны иметь привычку использовать «меньше чем», а не «меньше или равно» - тогда он будет иметь тенденцию выходить правильно.

7 голосов
/ 03 октября 2011

У вас есть 15 и 999 элементов, но поскольку массивы имеют индекс 0, это означает, что они работают с 0-14 и 0-998 соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...