Laden...

Liste von Objekten befüllen und Items wieder löschen

Erstellt von Wasined vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.017 Views
W
Wasined Themenstarter:in
13 Beiträge seit 2020
vor 4 Jahren
Liste von Objekten befüllen und Items wieder löschen

Hallo!

Ich bin recht neu mit C# und hänge gerade beim Thema aus einer List von Objekten einen Eintrag zu löschen bzw. auf ein Objekt nach dem Erstellen wieder zuzugreifen.

Ich habe eine Klasse, die Daten zu einem Kontakt enthält:

    class CKontaktDat
    {
        public string Name { get; set; } = string.Empty;
        public int ID { get; set; } = -1;
    } 

Ich möchte nun eine List damit befüllen und danach auch wieder einzelne Einträge löschen:

        public MainWindow()
        {
            List<CKontaktDat> kon = new List<CKontaktDat>();
            kon.Add(new CKontaktDat { Name = "Franz" , ID = 0});
            kon.Add(new CKontaktDat { Name = "Sepp", ID = 1 });
            kon.Add(new CKontaktDat { Name = "Thomas", ID = 2 });
            
           kon.Remove(new CKontaktDat{ Name = "Sepp" });
        }

Das will aber so nicht, der Eintrag mit der ID = 1 wird nicht gelöscht. Ich vermute, dass das damit zu tun hat, dass ich nicht aufs richtige Objekt zugreife, aber ich konnte leider nichts brauchbares in die Richtung finden.
Danke für Rückmeldungen!

T
2.219 Beiträge seit 2008
vor 4 Jahren

Das Problem ist ein grundlegends Verständis Problem beim Thema Referenzen, was dir noch fehlt.
Wenn du an Remove ein Objekt übergibst, muss dies das gleiche sein.
Mit new erzeugst du aber ein neues Objekt, was nur den gleichen Namen bekommt aber für die Liste ein neues Objekt ist.

Was du machen kann, ist dir das Objekt beim hinzufügen zu merken und dann bei Remove wieder zu übergeben.
Alternativ, wenn auch etwas forgeschrittener, kannst du mit Find das Objekt suchen und dann entfernen oder auch RemoveAll aufrufen um alle Objekte mit ID = 1 zu entfernen.

Find
RemoveAll
Verweistypen

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

W
Wasined Themenstarter:in
13 Beiträge seit 2020
vor 4 Jahren

Super, danke, das Find hat mir geholfen!