Warum kann ich der allgemeinen Liste mit dem Indexer keine Elemente hinzufügen?

Hier ist eine seltsame Situation, die ich heute gesehen habe:

Ich habe eine allgemeine Liste und möchte meiner Liste Elemente mit dem folgenden Indexer hinzufügen:

List<string> myList = new List<string>(10);
myList[0] = "bla bla bla...";

Wenn ich das versuche, bekomme ichArgumentOutOfRangeException

Dann habe ich angeschautList<T> Indexer-Set-Methode, und hier ist es:

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries"),    __DynamicallyInvokable] 
  set
  {
    if ((uint) index >= (uint) this._size)  
      ThrowHelper.ThrowArgumentOutOfRangeException();  //here is exception
    this._items[index] = value;
    ++this._version;
  }

Und auch angeschautAdd Methode:

[__DynamicallyInvokable]
public void Add(T item)
{
  if (this._size == this._items.Length)
    this.EnsureCapacity(this._size + 1);
  this._items[this._size++] = item;
  ++this._version;
}

Nun, wie ich sehe, verwenden beide Methoden den gleichen Weg:

// Add() Method
this._items[this._size++] = item; 
// Setter method
this._items[index] = value;

Das_items ist ein Array vom TypT :

private T[] _items;

Und im Konstruktor_items wie folgt initialisiert:

this._items = new T[capacity]

Nach alledem bin ich gespannt, warum ich meiner Liste keine Elemente mit einem Index hinzufügen kann
, obwohl ich die Listenkapazität explizit spezifiziere?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage