Что такое IndexOutOfRangeException в C#?

«Что такое IndexOutOfRangeException в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

IndexOutOfRangeException — это исключение времени выполнения, которое возникает при попытке доступа к элементу массива или коллекции (например, List<T>) по индексу, который находится вне допустимого диапазона. Это происходит, если индекс отрицательный или больше либо равен размеру коллекции.

Пример возникновения:

int[] numbers = { 1, 2, 3 };
int invalidValue = numbers[5]; // Выбросит IndexOutOfRangeException

Как предотвратить:

  1. Проверка границ вручную: Всегда проверяйте индекс перед доступом, особенно если он вычисляется динамически.
    if (index >= 0 && index < array.Length)
    {
        var item = array[index]; // Безопасный доступ
    }
  2. Использование foreach: Для простого перебора элементов предпочтительнее цикл foreach, который исключает ошибки с индексами.
    foreach (var number in numbers)
    {
        Console.WriteLine(number);
    }
  3. Использование безопасных методов: Для коллекций типа List<T> можно использовать методы ElementAtOrDefault() (из LINQ) или проверять свойство Count/Length.

Почему это важно: Обработка этого исключения критична для стабильности приложения, так как неконтролируемый доступ к памяти может привести к его аварийному завершению.