自Func<>代表们不会“无效”我怎样才能在C#3.0中实现以下目标
Func<int, int, void> delg = (a, b) => { Console.WriteLine( a + b); };
答案 0 :(得分:11)
使用Action而不是Func。
Action<int, int> delg = (a, b) => { Console.WriteLine( a + b); };
答案 1 :(得分:0)
作为Action<int, int>
的替代方案,您可以创建自己的委托并返回并传入您想要的任何类型。
public delegate void MyDelegate(int val1, int val2);
使用:
MyDelegate del = (a, b) => {Console.WriteLine( a + b); };
答案 2 :(得分:0)
Func<int, int, Action> foo = (a, b) => () => Console.Out.WriteLine("{0}.{1}", a, b);
foo(1, 2)();
答案 3 :(得分:0)
Func和Action是委托包装器,Funcs返回一个值(名称可能来自VBs函数..?)和Actions不。
就像CSharpAtl所说的那样,既然它们都是包装器,你也可以自己做出一个让你觉得更有意义的名词(比如VoidFunc(int val1 ,int val2))
,我认为Func
和Action
非常标准。