Mein Ziel ist es, eine Methode als Parameter übergeben zu können, genau wie ein Aufruf in Javascript, aber ohne Angabe des Rückgabewertes oder der Funktionssignatur.C# eine Methode als Parameter übergeben, ohne eine Methodensignatur anzugeben
Zum Beispiel in javascript ich tun kann:
- Funktion [Rückgabewert] Test() {} :
function test(fn()){
fn();
}
fn() in JavaScript kann auf jeden beliebigen Funktionstyp interpretiert werden
(Funktionsargumente überladen ist möglich ...)
C# bietet mir nicht viel mit "Action" und "Func".
In C# ich einen Delegaten erstellen und dann festlegen, welche Art von einem Delegierten ist:
Aktion: ein Delegierter auf eine Funktion, die void zurückgibt, die alle Funktionen der Aktion wird zeigen auf, haben um genau die gleiche Signatur zu enthalten (nicht cool ...)
Func: ein Delegat für eine Funktion, die einen Wert zurückgibt, alle Funktionen, auf die der Func zeigt, müssen dieselbe exakte Signatur enthalten (nicht cool. ..)
Die Verwendung eines Objekts bringt mich zu einer teuren Boxing/Unboxing Geschichte, die ich gerne vermeiden würde.
C# Experten, mit mir reden ..
Ich denke, die Antwort ist "C# ist kein JavaScript" - C# ist keine dynamisch typisierte Skriptsprache, also versuchen Sie nicht, sie als eine zu verwenden. – CompuChip
_Das Verwenden eines Objekts bringt mich zu einem teuren Boxen/Unboxing story_ : false. Wenn Sie ein Objekt verwenden, werden Sie möglicherweise gezwungen, das Objekt auf etwas Spezifischeres zu übertragen.Gießen und Boxen sind zwei völlig verschiedene Themen –
Was ist das Problem, das Sie versuchen zu lösen? Ich meine, sobald Sie den Delegierten in Ihrer Methode haben, wie planen Sie, es zu nennen? – dasblinkenlight