如何创建不返回的C#代理?

时间:2009-11-17 13:51:22

标签: c# delegates

自Func<>代表们不会“无效”我怎样才能在C#3.0中实现以下目标

Func<int, int, void> delg = (a, b) => { Console.WriteLine( a + b); };

4 个答案:

答案 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)),我认为FuncAction非常标准。