Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Liste von Objekten befüllen und Items wieder löschen
Wasined
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

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

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1833
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
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.
private Nachricht | Beiträge des Benutzers
Wasined
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

beantworten | zitieren | melden

Super, danke, das Find hat mir geholfen!
private Nachricht | Beiträge des Benutzers