【发布时间】:2016-03-20 18:56:53
【问题描述】:
我过去做过很多 PHP,在那里你可以将低谷代码作为参数传递,如果我是对的,它被称为 callable。
这就是它的样子:
METHOD('Parameter', function() {
echo "Hey!";
});
这在 C# 中可能吗?因为我很想这样做。将该函数作为方法中的参数执行。
【问题讨论】:
我过去做过很多 PHP,在那里你可以将低谷代码作为参数传递,如果我是对的,它被称为 callable。
这就是它的样子:
METHOD('Parameter', function() {
echo "Hey!";
});
这在 C# 中可能吗?因为我很想这样做。将该函数作为方法中的参数执行。
【问题讨论】:
如果我理解正确,您想将可调用函数传递给另一个方法吗?最简单的方法是使用Func 或Action 参数:
void MyMethod(Action<string> passedInFunc)
{
passedInFunc("Hey");
}
然后调用它:
MyMethod(s =>
{
Console.WriteLine(s);
});
Action 表示不返回任何值的函数,而 Func 是确实返回值的函数。
如果您不想向 Action 传递任何参数,可以使用 non-generic 版本。
最后,这些只是delegates,因此您也可以定义自己的自定义委托并传递那个。
【讨论】:
发布此问题后,我很快找到了我的遮阳篷:
用法:
TestMethod ("Lambda", () => {
Console.WriteLine("Expression");
});
方法:
public void TestMethod (string name, Action action) {
if(name == "Lambda") {
action.Invoke ();
}
}
【讨论】: