2016-06-08 4 views
0

Skriptbeispiel.Verwenden der anonymen Funktion unter Verwendung einiger Parameter

function TakeCallback(param, param2, callback) { 
    var a = param; 
    var b = param2; 
    callback(a, b); 
} 

.... some context ... 
TakeCallback("A", "B", function(one, two) { 
    var scopeA = one; 
    var scopeB = two; 
}); 

in C#

public void FuncWithCallback(int param, int param2, Func callback) 
{ 
    int myScope = param; 
    int myScope2 = param2; 

    callback(myScope, myScope2); 
} 

.... some context .... 

. 
. 
    FuncWithCallBack(10, 100, (x, y) => { 
     int AnotherScope = x; 
     int AnotherScope2 = y; 
    }); 
. 
. 

Frage

Meine Frage ist ziemlich einfach. Wie kann ich eine Callback-Funktion in C# verwenden, wie das Skript? Genauer gesagt, was ist die korrekte Syntax, um dies in dem dritten Parameter von

zu tun
public void FuncWithCallback(int param, int param2, Func callback) 

Wird es so aussehen?

public void FuncWithCallback(int param, int param2, Func(x, y) callback) 
// beep! error! 

Wenn es mehrere Optionen dafür gibt, bitte sagen Sie mir so viele wie möglich. Ich bin bereit zu lernen: D.

Antwort

6

Sie können Generika verwenden und Einbau-Delegierten:

public void FuncWithCallback(int param, int param2, Action<int, int> callback) 

Func ist ein Delegierter, die Parameter nehmen und etwas zurückgeben. Action gibt void zurück und kann Parameter übernehmen. Sie können auch eigene delegate Typen deklarieren, wenn Sie eine explizitere Benennung wünschen.

// Action 
delegate void MyDelegate(); 

// Action<int, int> 
delegate void MyDelegate2(int param1, int param2); 

// Func<string> 
delegate string MyDelegate3(); 

// Func<int, int, string> 
delegate string MyDelegate4(int param1, int param2); 
0

sind hier die Weise, in der Sie in C# Rückruf-Funktion verwendet wird, kann

Option 1

public static void FunctionWithCallBack(string a, string b, Func<string,string,string> callBackFunc) 
    { 
     string firstArg = a; 
     string secondArg = b; 
     var result = callBackFunc(firstArg, secondArg); 
    } 

    public static string CallBackFunctionMethod(string a, string b) 
    { 
     return a + " " + b; 
    } 
CallBackFunction.FunctionWithCallBack("Aslam", "Shaikh", CallBackFunction.CallBackFunctionMethod); 

Option 2

CallBackFunction.FunctionWithCallBack("Aslam", "Shaikh", (x, y) => x + " " + y); 

Lassen Sie mich wissen, wenn Sie irgendwelche Fragen

Verwandte Themen