是否可以声明没有参数的泛型委托?

时间:2011-12-07 11:57:33

标签: c# generics delegates func

我有......

Func<string> del2 = new Func<string>(MyMethod);

我真的想做..

Func<> del2 = new Func<>(MyMethod);

因此回调方法的返回类型为void。这是否可以使用泛型类型func?

5 个答案:

答案 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();
}