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 » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 2 Beiträge
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);
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