使用带几个参数的匿名函数

Using anonymous function taking a few parameters

脚本示例。

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;
});

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;
    });
.
.

问题

我的问题很简单。如何像脚本一样在 C# 中使用回调函数?更准确地说,在

的第三个参数中执行此操作的正确语法是什么
public void FuncWithCallback(int param, int param2, Func callback)

会变成这样吗?

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

如果有多种选择,请尽可能多的告诉我。我准备好学习了:D.

您可以使用泛型和内置委托:

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

Func is a delegate that can take parameters and return something. Action returns void and can take parameters. You can also declare your own delegate 类型,如果你想有更明确的命名。

// 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);

以下是您可以在 C# 中使用回调函数的方法

选项 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);

选项 2

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

如果您有任何问题,请告诉我