C# Liste kopiert sich außerhalb von Schleife immer wieder

Neue Frage »

Auf diesen Beitrag antworten »
C not so sharp C# Liste kopiert sich außerhalb von Schleife immer wieder

Hallo,

ich hätte da eine Frage zu Listen in C#.

Und zwar wollte ich die Liste "sorted" in Liste "Kopie" kopieren.
Dann, wenn die if-Abfragen passen, Elemente aus "Kopie" löschen. Die Liste "sorted" wurde aber auch immer kürzer.

code:
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:

List<Point> Kopie = new List<Point>();
            
            Kopie = sorted;
            
            for (int i = 0; i < points.Count - 1; i++)
            {

                richTextBox1.AppendText(Environment.NewLine +  sorted[i] + Kopie[i]);
            }

            Point Links = new Point();
            Point Rechts = new Point();
            Point Oben = new Point();
            Point Unten = new Point();

            
            for (int i = 0; i < sorted.Count;i++)
            {
                
                Links =Punkt1;
                Rechts =Punkt2;
                Oben  =Punkt3;
                 Unten.X =Punkt4;
                
              
                if (Kopie.Contains(Links)==true || Kopie.Contains(Rechts) == true || Kopie.Contains(Oben) == true || Kopie.Contains(Unten) == true)
                {
                    Punkt = sorted[i];
                    Kopie.Remove(Punkt);
                    richTextBox1.AppendText(Environment.NewLine + "Löschen" + ": " + sorted[i] + "Count: " + sorted.Count);
                    
                }

                else
                {
                    
                    ecken.Add(sorted[i]);
                    richTextBox1.AppendText(Environment.NewLine + "Treffer" + ": " + sorted[i]);

                }
                
            }



Ich habe dann
code:
1:
2:
3:
Kopie = sorted;


durch
code:
1:
2:
3:
4:
5:
6:
7:
for(int i =0; i <sorted.Count;i++)
            {
                Kopie.Add(sorted[i]);

            }


ersetzt. Und es läuft wie gewünscht.

Aber ich verstehe nicht warum der Kopiervorgang, der ja außerhalb der Schleife steht, innerhalb der Schleife durchgeführt wird.

Könnte mir das jemand erklären? smile
 
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast nicht wirklich zwei verschiedene Listen, sondern nur zwei Verweise auf die selbe Liste.
Wenn du eine wirklich neue Liste haben willst: List<Point> Kopie = new List<Point>(sorted);
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »