Entwickler-Ecke
Basistechnologien - Liste von Arrays
pepe-je - Do 22.04.10 20:57
Titel: Liste von Arrays
Ich möchte eine zweidimensionale Liste schaffen, also mit Zeilen und Spalten.
Ich habe das mit einer Liste von Arrays versucht
Liste<Array>
und dazu ein kleines Programm zum ausprobieren geschrieben
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| List<Array> Liste = new List<Array>(); string[] arr = new string[4]; ListBox listBox1 = new ListBox();
arr[0] = "Maus"; arr[1] = "Ratte"; arr[2] = "Hamster"; arr[3] = "Eichhörnchen";
Liste.Add(arr);
arr[0] = "Geier"; arr[1] = "Adler"; arr[2] = "Habicht"; arr[3] = "Falke";
Liste.Add(arr);
foreach (string[] a in Liste) { foreach (string s in a) { listBox1.Items.Add(s); } } |
In der ListBox sollten nun die acht verschiedenen Tiere stehen. Aber in Wirklichkeit werden die letzten 4 Tiere, also die des zweiten Arrays,
zweimal hintereinander aufgelistet.
Ich habe keine Ahnung, wodurch das kommt .Kann mir jemand helfen?
Vielen Dank
pepe-je
Moderiert von
Christian S.: C#-Tags hinzugefügt
danielf - Do 22.04.10 21:02
Hallo,
mit Bereich C#, Text auswählen und dann auf Plus klicken kannst du Code als solchen kennzeichen oder einfach [ cs]code[/ cs] einfügen.
Zuerst zu deinem Problem. Das liegt daran, dass du kein neues Array objekt anlegst, sondern das Alte nur überschreibst. Deshalb stehen dann in beiden das Gleiche. ein arr = new string[4] nach dem ersten Add sollte abhilfe schaffen.
Das Andere ist, dass du auch eine List<List<string>> anlegen kannst, falls du noch nicht sicher weißt, wieviel Tiere in eine Kategorie kommen.
Gruß
Ralf Jansen - Do 22.04.10 21:03
Da passiert weil du nach dem ersten 'Liste.Add(arr);' kein neues Array erzeugst sondern die Elemente des alten Arrays überschreibst. Du hast also 2 mal das gleiche Array der Liste hinzugefügt.
Füg mal ein 'arr = new string[4];' vor dem zwiten befüllen von arr hinzu.
Übrigens könntest du auch gleich eine List<List<string>> benutzten.
pepe-je - Fr 23.04.10 09:16
Hallo, Daniel und Ralf,
Euch beiden vielen Dank für Eure Hilfe.
Gruß Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!