C# 创建可调用对象 PHP
C# Creating callable like PHP
我过去做过很多 PHP 并且你可以通过代码作为参数传递,如果我是对的,它被称为 callable .
这是它的样子:
METHOD('Parameter', function() {
echo "Hey!";
});
这在 C# 中可行吗?因为我很想那样做。将该函数作为方法中的参数执行。
如果我没理解错的话,你想将一个可调用函数传递给另一个方法?最简单的方法是使用 Func or Action 参数:
void MyMethod(Action<string> passedInFunc)
{
passedInFunc("Hey");
}
然后调用它:
MyMethod(s =>
{
Console.WriteLine(s);
});
Action 表示不 return 任何值的函数,而 Func 是 return 值的函数。
如果您不想向操作传递任何参数,可以使用 non-generic 版本。
最后,这些只是 delegates,因此您也可以定义自己的自定义委托并传递那个委托。
我发布这个问题后很快找到的awnser:
用法:
TestMethod ("Lambda", () => {
Console.WriteLine("Expression");
});
方法:
public void TestMethod (string name, Action action) {
if(name == "Lambda") {
action.Invoke ();
}
}
我过去做过很多 PHP 并且你可以通过代码作为参数传递,如果我是对的,它被称为 callable .
这是它的样子:
METHOD('Parameter', function() {
echo "Hey!";
});
这在 C# 中可行吗?因为我很想那样做。将该函数作为方法中的参数执行。
如果我没理解错的话,你想将一个可调用函数传递给另一个方法?最简单的方法是使用 Func or Action 参数:
void MyMethod(Action<string> passedInFunc)
{
passedInFunc("Hey");
}
然后调用它:
MyMethod(s =>
{
Console.WriteLine(s);
});
Action 表示不 return 任何值的函数,而 Func 是 return 值的函数。
如果您不想向操作传递任何参数,可以使用 non-generic 版本。
最后,这些只是 delegates,因此您也可以定义自己的自定义委托并传递那个委托。
我发布这个问题后很快找到的awnser:
用法:
TestMethod ("Lambda", () => {
Console.WriteLine("Expression");
});
方法:
public void TestMethod (string name, Action action) {
if(name == "Lambda") {
action.Invoke ();
}
}