Was ist WeakReference in C#?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Was ist WeakReference in C#?

    Hallo zusammen,

    ich bin gestern auf 'WeakReference' gestoßen und hab mal MSDN gefragt was es bedeutet, nur die Erklärung ist mir sehr unklar -.- also fragte ich nen Kumpel
    er meinte es ist sowas wie

    C#-Quellcode

    1. List<String> b = new List<String>();


    Nur ergibt das für mich kein Sinn.

    Also was macht das nun direkt ? Oo
    Erstellt es einen verweis oder ... ?
    Dein Kumpel meinte vmtl. damit nur, dass es auch ne Generika ist, was überhaupt nicht beschreibt, was die WeakReference macht.

    Ich denke MSDN zeigt. eigt. ziemlich gut was das macht.

    Die GC löscht ja idR nur dinge, auf die keine Referenz mehr gehalten wird, heißt in diesem Fall Felder/Variablen in irgendeiner Form. Durch die WeakReference wird das jedoch ausgehebelt, sodass der GC dieses Objekt trotzdem wegschmeißen darf und dadurch, dass das Target dann null wird ist auch klar, dass wenn es gelöscht wurde die Referenz einfach genullt wird.

    D.h. mit der WeakReference zwingst du den GC nicht dazu ein Objekt zu behalten...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Nein, dein Beispiel ist keine WeakReference. In C# musst du dich um den Speicher selber nicht kümmern, das macht der GarbageCollector. Solange eine Objekt Referenzen hat schmeißt der GC dieses nicht weg. Wenn ein Objekt jedoch nur noch Weak (schwache) Referenzen hat schon. Es ist also praktisch ein Verweiß auf ein Objekt, was dieses aber nicht am Leben hält.

    Weak References – Schwache Referenzen

    //Edit: Oh, zu spät :)
    Es ist eine Möglichkeit auf Objekte zuzugreifen ohne deren Garbagecollection (Freigabe von Ressourcen/Speicher) zu verhindern.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.