Ein paar Hintergrundinformationen:
Wie gesagt, wenn Sie eine dynamische Sammlung von Dingen haben möchten, verwenden Sie a List<T>. Intern verwendet eine Liste auch ein Array zur Speicherung. Dieses Array hat wie jedes andere Array eine feste Größe. Sobald ein Array mit einer Größe deklariert wurde, ändert es sich nicht mehr. Wenn Sie ein Element zu einem hinzufügen List, wird es dem Array hinzugefügt. Anfänglich Listbeginnt das mit einem Array, von dem ich glaube, dass es eine Länge von 16 hat. Wenn Sie versuchen, das 17. Element zum ListArray hinzuzufügen , wird ein neues Array zugewiesen, das (glaube ich) doppelt so groß ist wie das alte , also 32 Artikel. Dann wird der Inhalt des alten Arrays in das neue Array kopiert. Während a Listfür den externen Beobachter dynamisch erscheint, muss es auch intern den Regeln entsprechen.
Und wie Sie vielleicht vermutet haben, ist das Kopieren und Zuweisen der Arrays nicht kostenlos, daher sollte man versuchen, so wenig wie möglich davon zu haben, und dazu können Sie (im Konstruktor von List) eine Anfangsgröße des Arrays angeben. Das ist in einem perfekten Szenario gerade groß genug, um alles aufzunehmen, was Sie wollen. Dies ist jedoch eine Mikrooptimierung und es ist unwahrscheinlich, dass es Ihnen jemals etwas ausmacht, aber es ist immer schön zu wissen, was Sie tatsächlich tun.