sagen, dass ich die folgende C# -Code haben:Bei der Verkettung von .NET-Delegaten, wie werden die ursprünglichen Instanzen (re) verwendet?
Action a = TestMethod;
Action b = TestMethod;
Action c = b;
b += a;
Tests zeigt an, dass b
nicht dieselbe Instanz wie c
ist, so eindeutig die +
Betreiber scheint eine neue Instanz des Delegaten zu erstellen. Ist das eine korrekte Annahme? Wird die b
-instanz intern wiederverwendet oder kopiert sie einfach die Methoden-/Zielinformationen in eine neue Instanz?
Ich bin nicht in der Lage, die Implementierung des +
-Operators für Delegaten zu finden, die Delegate-Klasse scheint es nicht zu enthalten.
Kann jemand etwas zu diesem Thema beleuchten?
Der Grund, warum ich frage ist, dass ich einige Klassen erstellen, die sich wie Zwiebeln umeinander schichten, und die äußerste Schicht wird eine innere Ebene aufrufen, einige Delegierte erhalten und dann weitere Methoden an diese Delegierten anhängen, Ich bin nur besorgt, dass dies die Delegierten, die ich von der inneren Schicht erhalte, in irgendeiner Weise ändern wird. In diesem Fall muss ich Kopien/Klone zurückgeben, anstatt nur die internen Referenzen.
Beachten Sie, dass dies vollständig interner Code für meine Bibliothek ist. Obwohl ich weiß, dass die Weitergabe interner Datenstrukturen im Allgemeinen eine schlechte Idee ist, wenn ich es mit diesen Klassen sicher machen kann, werde ich dies tun.
Danke, das vereinfacht alles. –