Laden...

Übergabe List<string> an ArrayList

Erstellt von vitafit vor 11 Jahren Letzter Beitrag vor 11 Jahren 822 Views
Thema geschlossen
vitafit Themenstarter:in
23 Beiträge seit 2011
vor 11 Jahren
Übergabe List<string> an ArrayList

Guten Morgen zusammen,

ich stege gerade etwas auf dem schlauch folgenden Code betreffend: (ich hab ihn extra vereinfacht, handelt sich normalerweise um eine DB-Query...)

string[] data = new string[] { "1", "2", "3", "4" };

            ArrayList final = new ArrayList();
            List<string> entrys = new List<string>();

            foreach (string n in data)
            {
                entrys.Clear();
                entrys.Add(n);
                final.Add(entrys);
            }

Wenn ihr das ganze durchlaufen lasst, habt ihr am Schluss 4x die "4" anstelle aller Zahlen... mein Ziel ist es, mehere elemente und einer Liste vom Typ String zusammeln und diese anschließend in eine ArrayList hinzuzufügen. In diesem Beispiel erscheint das nicht sinnvoll, in größeren komplexen Querys allerdings schon.

Wo liegt mein Fehler? Wieso werden jedesmal die zuvor eingefügten Werte überschrieben?

1.002 Beiträge seit 2007
vor 11 Jahren

Hallo vitafit,

wichtig: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.

Zu deiner Frage: Du fügst deiner ArrayList nicht viermal einen String hinzu, sondern viermal die gleiche Liste entrys. Dadurch, dass es ein und dieselbe Liste ist, die du der ArrayList mehrfach hinzufügst, verweisen natürlich alle Elemente auf genau diese eine Liste — von der wird keine Kopie erzeugt, sondern lediglich den ArrayList-Elementen mehrfach die Referenz auf die gleichen Liste zugewiesen.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hinweis von herbivore vor 11 Jahren

Den Umgang mit Collections und die Besonderheiten von Referenztypen setzen wir als bekannt voraus, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Thema geschlossen