749 Stimmen

Array versus Liste<T>: Wann ist was zu verwenden?

MyClass[] array;
List<MyClass> list;

Welche Szenarien gibt es, in denen das eine dem anderen vorzuziehen ist? Und warum?

13 Stimmen

Arrays sind eher veraltet, wie in einem beliebte Diskussion hier. Auch hier hervorgehoben und von unserem Gastgeber im Blog .

11 Stimmen

Wenn ich mich nicht irre, hat die List<> ein Array als interne Struktur. Immer wenn das interne Array gefüllt ist, wird der Inhalt einfach in ein Array kopiert, das doppelt so groß ist (oder eine andere Konstante, die die aktuelle Größe angibt). de.wikipedia.org/wiki/Dynamische_Anordnung

0 Stimmen

Ykok: Was du sagst, scheint zu stimmen, ich habe den Quellcode von Liste<> hier .

-2voto

Alberto Costa Punkte 121

Beachten Sie, dass dies bei List nicht möglich ist:

List<string> arr = new List<string>();

arr.Add("string a");
arr.Add("string b");
arr.Add("string c");
arr.Add("string d");

arr[10] = "new string";

Es wird eine Exception erzeugt.

Stattdessen mit Arrays:

string[] strArr = new string[20];

strArr[0] = "string a";
strArr[1] = "string b";
strArr[2] = "string c";
strArr[3] = "string d";

strArr[10] = "new string";

Bei Arrays gibt es jedoch keine automatische Größenänderung der Datenstruktur. Sie müssen sie manuell oder mit der Methode Array.Resize verwalten.

Ein Trick könnte sein, eine Liste mit einem leeren Array zu initialisieren.

List<string> arr = new List<string>(new string[100]);

arr[10] = "new string";

Aber in diesem Fall, wenn Sie ein neues Element mit Add-Methode wird es am Ende der Liste injiziert werden.

List<string> arr = new List<string>(new string[100]);

arr[10] = "new string";

arr.Add("bla bla bla"); // this will be in the end of List

0 Stimmen

Ich bin mir nicht sicher, ob dies etwas zur Diskussion beiträgt. Es sind wahre Aussagen, aber nicht so formuliert, dass man sich für das eine oder das andere entscheiden kann. Es unterstreicht lediglich eine Fehlinterpretation der new List<T>(int) Konstrukteur.

0 Stimmen

Ich stimme Ihnen zu, dass es nicht korrekt ist, eine Liste so zu verwenden, als wäre sie ein Array. Vielleicht kann ich das Konzept besser erklären. Listen sind praktisch und wachsen, ohne dass der Programmierer es merkt (Magie?), und man kann nur Elemente am Ende hinzufügen. Arrays hingegen skalieren nicht automatisch, der Programmierer muss sich damit begnügen, ein neues, größeres Array zu erstellen und die Elemente des alten Arrays zu kopieren. Arrays nehmen den Speicher effizienter auf als Listen.

0 Stimmen

Dies ist ein alter Beitrag und die akzeptierte Antwort deckt dieses Szenario kurz und bündig ab. Wenn Sie einen Beitrag erneut zur Diskussion stellen, dann bringen Sie bitte etwas Neues auf den Tisch oder geben Sie uns einen echten Grund, für Ihre Antwort zu stimmen, Sie sollten direkt kommentieren, warum Ihre Antwort besser ist. Sie haben einige einführende Informationen über die fraglichen Typen hinzugefügt, aber Sie haben sich nicht zu der Methodik geäußert, die man durchlaufen könnte, um auszuwählen, welche der Typen man in seinem Code verwenden will.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X