Autor Beitrag
pepe-je
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Do 22.04.10 20:57 
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

ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 23.04.10 09:16 
Hallo, Daniel und Ralf,
Euch beiden vielen Dank für Eure Hilfe.
Gruß Peter