我有......
Func<string> del2 = new Func<string>(MyMethod);
我真的想做..
Func<> del2 = new Func<>(MyMethod);
因此回调方法的返回类型为void。这是否可以使用泛型类型func?
答案 0 :(得分:15)
Func
系列代表用于获取零个或多个参数并返回值的方法。对于采用零个或多个参数的方法,不使用Action
个委托之一返回值。如果方法没有参数,请使用the non-generic version of Action
:
Action del = MyMethod;
答案 1 :(得分:7)
是的,返回void(无值)的函数是Action
public Test()
{
// first approach
Action firstApproach = delegate
{
// do your stuff
};
firstApproach();
//second approach
Action secondApproach = MyMethod;
secondApproach();
}
void MyMethod()
{
// do your stuff
}
希望这会有所帮助
答案 2 :(得分:3)
答案 3 :(得分:2)
如果您被“强迫”使用Func<T>
,例如在要重用的内部通用API中,您可以将其定义为new Func<object>(() => { SomeStuff(); return null; });
。
答案 4 :(得分:0)
这是一个使用Lambda表达式而不是Action / Func委托的代码示例。
delegate void TestDelegate();
static void Main(string[] args)
{
TestDelegate testDelegate = () => { /*your code*/; };
testDelegate();
}