___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entworfen wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert.
___ qstnhdr ___ Ref-Parameter in der anonymen Methode aktualisieren
___ tag123anonymiemethoden ___ Eine anonyme Methode ist eine Prozedur oder Funktion, der kein Name zugeordnet ist.
___ tag123ref ___ Das Schlüsselwort ref bewirkt, dass ein Argument als Verweis übergeben wird und nicht als Wert. Die Auswirkung der Referenzübergabe besteht darin, dass jede Änderung des Parameters in der Methode in der zugrunde liegenden Argumentvariablen in der aufrufenden Methode widergespiegelt wird. Der Wert eines Referenzparameters ist immer gleich dem Wert der zugrunde liegenden Argumentvariablen.
___ answer23630920 ___
In Ihrem Fall gibt es keinen praktikablen Workaround für dieses Problem: Wenn das Ereignis %code% ausgelöst wird, kann der %code% im Aufrufer Ihrer %code% -Funktion weit entfernt sein.
In solchen Situationen sollten Sie das %code% in einem Objekt kapseln und einen Verweis auf dieses Objekt sowohl im Ereignishandler als auch im Aufrufer beibehalten, wie folgt:
%Vor%
___ qstntxt ___
Gibt es eine Problemumgehung, um einen Ref-Parameter innerhalb einer anonymen Methode zu aktualisieren?
Ich weiß, dass die anonyme Methode keinen Zugriff auf ref-Parameter des äußeren Bereichs erlaubt, aber gibt es einen anderen Weg, dies zu tun? Ich verwende eine externe Bibliothek für den MessageStream, also kann ich die Argumente des Delegaten nicht ändern ...
%Vor%
___ answer23630963 ___
Wenn Sie möchten, dass der Delegat eine Variable aus einem anderen Bereich aktualisiert, übergeben Sie ein Lambda, das den Wert festlegt, anstatt die Anzahl um %code% zu übergeben.
%Vor%
___