Исключение: Index was out of range

Очень часто при работе с массивами или коллекциями можно столкнуться с исключением: Index was out of range. В чём заключается суть ошибки.

Представьте, что у Вас есть массив, состоящий из двух элементов, например:

Особенность массивов в языке c# заключается в том, что начальный индекс элемента всегда равен нулю. То есть в данном примере, не смотря на то, что число пять — это первое значение элемента массива, при обращении к нему потребуется указать индекс ноль. Так же и для числа семь, несмотря на то, что это число является вторым элементом массива, его индекс так же будет на единицу меньше, то есть, равен одному.

5 7
0 1

Обращение к элементам массива:

Результат: a = 5 и b = 7.

Но, стоит только указать неверный индекс, например:

В результате получаем исключение: Index was outside the bounds of the array, то есть индекс находиться за границами диапазона, который в данном примере составляет от 0 до 1. Поэтому при возникновении данной ошибки, первое, что нужно сделать, так это убедиться в том, что Вы указали правильный индекс при обращении к элементу массива или обобщённой коллекции.

Exception

Так же данная ошибка очень часто встречается в циклах, особенно в цикле for, если Вы указываете неверное количество элементов содержащихся в массиве, например:

В результате так же возникает ArgumentOutOfRangeException, так как количество элементов равно двум, а не трём. Поэтому лучше всего в циклах использовать уже готовые методы для подсчёта количества элементов массива или коллекций, например:

для массива

для коллекции

Говоря про циклы нельзя не упомянуть ещё одну ошибку, которая очень часто встречается у многих начинающих программистов. Представим, что у нас есть две коллекции и нам нужно заполнить список var2 значениями из первого списка.

Не смотря на то, что вроде бы все указано, верно, в результате выполнения кода, уже на самом первом шаге цикла, будет выдано исключение: Index was out of range. Это связано с тем, что для заполнения коллекции var2 требуется использовать не индекс, а метод Add.

Если же Вы хотите отловить данное исключение, в ходе выполнения программы, то для этого достаточно воспользоваться блоками try catch, например:

Читайте также:

Похожие темы

Как изменить код программы без исходника... Как изменить код программы, если потерян исходник Бывают ситуации, когда под рукой нет исходника, а Вам срочно требуется внести изменения в коде, нап...
Как создать закладку с кодом в программе Visual St... Создаём закладки с кодом в программе Visual Studio Очень часто при создании программ бывает такой момент, когда ты понимаешь, что нужно вновь воспольз...
У меня не открывается xml файл, что делать?... Что делать, если не удается открыть xml файл? В этой статье хотелось бы рассмотреть некоторые причины, из-за которых очень часто не удается открыть x...
Деление чисел на ноль в языке c#... Деление на ноль типов с плавающей точкой в языке c# В очередной раз, наткнувшись на видеоурок, в котором создается калькулятор, я обратил внимание на...
Как программно получить путь к папке... Как программно получить путь к папке В этой статье хотелось бы рассказать о способе, который позволяет программно получить путь к открытой в данный м...