Laden...

string[] und List<string> Frage

Erstellt von math55 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.398 Views
math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren
string[] und List<string> Frage

Hallo,

ich habe in meiner Anwendung ein string Array verwendet und zwar in dieser Art:


string[] array = new string[50];

Jetzt möchte ich dieses durch eine List<string> ersetzen, allerdings ohne jetzt nen Haufen Code ändern zu müssen. Also dachte ich, ich mach das so:


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

Bisher greife ich auch das Array zu, indem ich sage:


array[index] = "fdfksdjflkf";

Verwende ich jetzt die List<string>, kompiliert er zwar, aber ich bekomme eine OutOfRangeException, wenn ich zuweisen (array[index] = "fdfksdjflkf"; ) will. Mir ist klar, dass man das mit add macht, aber geht es nicht irgendwie, ohne jetzt sämtliche Zuweisungen abändern zu müssen?

Danke 🙂

1.200 Beiträge seit 2007
vor 15 Jahren

Du könntest die Größe der Liste bereits vorinitialisieren.

Lits<string> array = new List<string>(50);

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Hallo,

hatte ich auch schon, Count ist danach immer 0. Hab ich einen Denkfehler? Kann ich denn überhaupt mittels [index] auf die List zugreifen?

Grüße

1.200 Beiträge seit 2007
vor 15 Jahren

hmm, Count = 0 ist ok, aber Capacity sollte auf 50 sein. Wenn es so nicht geht, wirst du um den call von Add nicht rumkommen.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo math55,

List<string> array = new List<string>(new string[50];);

herbivore

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Ok, so geht es, kannst Du mir das auch erklären?

Danke 🙂

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo math55,

das kann dir die :rtfm: Doku erklären. Insgesamt bitte nicht nach Grundlagen frage. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Hallo, alles klar. Eine Frage noch:

Ich wollte damit eigentlich eine kleine Performanceverbesserung erreichen, aber das macht wirklich keinen Unterschied, ob ich ein Array nehme oder die besagte List<string>. Welche Collection könnte ich denn nehmen oder wäre es in jedem Fall egal?

Danke 🙂

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo math55,

wenn du mit Array kein Problem hast, nimm Array. Die Performance von List<T> müsste etwas schlechter sein als die von Array.

herbivore

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Eine Sache habe ich noch. Könnte es nach der Umstellung von string[] array auf List<string> Probleme mit der Sortierung geben?

Danke 🙂

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo math55,

eigentlich nicht. Beide nutzen Quicksort als Sortieralgorithmus.

herbivore

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Hallo, danke für die frühe Antwort. Ich meinte eher, wenn ich die Elemente reinpacke mittels list[index] = "dsdsdd", kommen diese dann auch wieder an dieser Stelle raus?

Danke

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo math55,

warum sollte das anders sein?

So oder so: Warum probierst du es nicht aus. Denn da sind wir schon wieder bei [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

Array oder List<> sortieren nicht automatisch. Änderst du dein Array/List<> muss du erneut sortieren. Und ja, änderst du das 5 Element (Array, List<>) bleibt diese Änderung auch für den selben Index (in dem Fall 5) bestehen.

Edit:
Mist zu langsam 😉

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...