Когда я инициализирую массив и элементы доступа с помощью индексатора, это работает отлично:
object[] temp = new object[5];
temp[0] = "bar";
Теперь я ожидал бы, что то же самое будет работать для List<T>
, поскольку вы можете его инициализировать, передав способность конструктору:
List<object> temp = new List<object>(5);
temp[0] = "bar";
Эта последняя строка, однако, вызывает следующее исключение:
Индекс оказался вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции
Почему это происходит для типа List<T>
, но не для массива? Поскольку массивы представляют собой только абстракции нижнего уровня для коллекций для CLR, то почему это исключение происходит?
Оригинальный вопрос от Awais Mahmood.