Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » C# Liste kopiert sich außerhalb von Schleife immer wieder » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C# Liste kopiert sich außerhalb von Schleife immer wieder
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
C not so sharp
unregistriert
C# Liste kopiert sich außerhalb von Schleife immer wieder Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
24.05.2017 16:18
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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);

__________________
Syntax Highlighting fürs Board (Link)
26.05.2017 21:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » C# Liste kopiert sich außerhalb von Schleife immer wieder