Действительно базовая путаница в массиве / цикле C #

#c# #.net #arrays #loops

#c# #.net #массивы #циклы

Вопрос:

Я делаю базовый 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));
    }
}
  

Значит, это говорит мне, что я выхожу за пределы массива?

Если массив из

0-15, 0-999

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

Ответ №1:

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

Комментарии:

1. О, так это 15 элементов, а не 0-15? Спасибо, теперь это имеет смысл.

Ответ №2:

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