脚本示例。
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。
答案 0 :(得分:6)
您可以使用泛型和内置代理:
public void FuncWithCallback(int param, int param2, Action<int, int> callback)
Func是一个可以获取参数并返回内容的委托。 Action返回void并可以获取参数。如果您想要更明确的命名,也可以声明自己的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);
答案 1 :(得分:0)
以下是在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 );
如果您有任何问题,请告诉我