Entwickler-Ecke

C# - Die Sprache - Arrax dynamisch vergrößern / verkleinern?


Fetze - Fr 05.10.07 16:13
Titel: Arrax dynamisch vergrößern / verkleinern?
Ganz kurz: Wie geht das? Oder muss ich das manuell machen, ein neues Array erstellen und alle Werte übertragen? Wie macht die Systeminterne ArrayList das denn?


Christian S. - Fr 05.10.07 16:19

Wenn Du sowas brauchst, ist ein Array dafür sehr ungeeignet. Nimm stattdessen eine generische List<T>, die ist komfortabler.

ArrayList und List<T> benutzen, wenn man Reflector glaubt, was ich tue ;-), auch ein Array. Aber sie nehmen Dir die ganze Arbeit ab ;-)


Fetze - Fr 05.10.07 16:23

Wenn ArrayList UND List<> ein Array verwenden, wo ist dann der Unterschied? oO
Ich hatte List<> immer für eine LinkedList gehalten..?

Und: Ist bei ArrayList auch sicher, dass ein Index A auch immer das Objekt enthält, was ich zuvor bei Index A eingefügt habe? Das ist in diesem Fall wichtig, weswegen ich das eigentlich selbst übernehmen wollte. Außerdem sollte das ganze möglicht schnell sein, weswegen ich vor List<>, die ich ja für eine Linkedlist gehalten habe / halte, zurückschrecke.


Christian S. - Fr 05.10.07 16:32

user profile iconFetze hat folgendes geschrieben:
Wenn ArrayList UND List<> ein Array verwenden, wo ist dann der Unterschied? oO
Dass List<T> eine generische Liste ist, die Dir (a) das stände hin- und her-casten erspart und (b) damit auch das boxing / unboxing bei Werttypen. Damit ist sie komfortabler, schneller und vor allem typensicher.

user profile iconFetze hat folgendes geschrieben:
Ich hatte List<> immer für eine LinkedList gehalten..?
Ich war auch überrascht, aber kannst es Dir ja im Reflector anschauen ;-)

user profile iconFetze hat folgendes geschrieben:
Und: Ist bei ArrayList auch sicher, dass ein Index A auch immer das Objekt enthält, was ich zuvor bei Index A eingefügt habe?
Wenn Du Elemente, die vor Index A liegen, wieder entfernst, rutschen die anderen natürlich nach.

user profile iconFetze hat folgendes geschrieben:
Das ist in diesem Fall wichtig, weswegen ich das eigentlich selbst übernehmen wollte. Außerdem sollte das ganze möglicht schnell sein, weswegen ich vor List<>, die ich ja für eine Linkedlist gehalten habe / halte, zurückschrecke.
Mit der Performance von List<T> hatte ich eigentlich nie Probleme.


Schau Dir mal LinkedList<T> an, das ist eine doppelt verkettete Liste, allerdings dann natürlich ohne den Zugriff durch Indizes.


Fetze - Fr 05.10.07 16:34

Okay, dann danke :)


Christian S. - Fr 05.10.07 16:36

Hast mein Edit evtl. nicht mehr gesehen:

Schau Dir mal LinkedList<T> an, das ist eine doppelt verkettete Liste, allerdings dann natürlich ohne den Zugriff durch Indizes.