Für die spezielle Frage "Wird pClass durch Müll gesammelt?": Das Ereignisabonnement hat keine Auswirkungen auf die Sammlung von pClass (als Herausgeber).
Für GC im Allgemeinen (insbesondere das Ziel): Es hängt davon ab, ob MyFunction statisch oder instanzbasiert ist.
Ein Delegat (z. B. ein Ereignisabonnement) für eine Instanzmethode enthält einen Verweis auf die Instanz. Ja, ein Event-Abonnement verhindert GC. Sobald jedoch das Objekt, das das Ereignis veröffentlicht (pClass oben), zur Erfassung berechtigt ist, ist dies kein Problem mehr.
Beachten Sie, dass dies eine Einbahnstraße ist. dh wenn wir haben:
publisher.SomeEvent += target.SomeHandler;
dann wird "Herausgeber" "Ziel" am Leben erhalten, aber "Ziel" wird "Herausgeber" nicht am Leben erhalten.
Also nein: Wenn pClass trotzdem gesammelt werden soll, müssen die Listener nicht abgemeldet werden. Wenn pClass jedoch langlebig wäre (länger als die Instanz mit MyFunction), könnte pClass diese Instanz am Leben erhalten, so dass dies der Fall wäre notwendig sein, abmelden , wenn Sie das Ziel gesammelt werden sollen.
Aus diesem Grund sind statische Ereignisse jedoch sehr gefährlich, wenn sie mit instanzbasierten Handlern verwendet werden.