Entwickler-Ecke

Basistechnologien - Listen erzeugen immer Instanzen


BCT1 - Fr 04.02.11 18:28
Titel: Listen erzeugen immer Instanzen
Hi, nachdem ich ein bisschen mit Listen gearbeitet habe ist mir aufgefallen, dass wenn ich eine Liste einer anderen Liste zuordne und dann in einer Liste etwas ändere, dann wird es auch in der anderen geändet. Hier mal kurz was ich meine:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
List<int> liste = new List<int>();
liste.Add(10);

List<int> temp = liste;
temp[0] = 20;

Console.WriteLine(liste[0].ToString());     // -> 20
Console.WriteLine(temp[0].ToString());     // -> 20
Console.ReadLine();

Wenn ich die eine der Listen ändere, ändert sich auch die andere. Wie kann ich das verhindern dass die Listen immer so verknüpft sind?

Hoffe ihr könnt mir helfen.
- BCT1


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 04.02.2011 um 17:39


Th69 - Fr 04.02.11 18:35

Mittels "List<int> temp = liste;" referenzierst du nur auf die andere Liste (ich hoffe, du kennst den Unterschied zwischen Wertetypen und Referenztypen?).

Zum Kopieren mußt du eine neue Liste anlegen:

C#-Quelltext
1:
List<int> temp = new List<int>(liste);