在函数中传递委托作为参数不允许委托的调用

时间:2012-10-25 19:21:53

标签: c#

我想让这个函数在我的程序中运行,但是Visual Studio告诉我MyFunc是一个变量但是像方法一样使用,但这就是我想要做的。试着打电话。

static private void TryThisFunc(Delegate MyFunc)
{
   try
   {
       MyFunc(); // MyFunc is a variable but is used like a method
   }
   catch (Exception ex)
   {
       Console.WriteLine(ex.Message);
   }
}

1 个答案:

答案 0 :(得分:8)

您尚未指定要使用的委托的类型。它可以是一个带参数的委托 - 在这种情况下,显然你不能在没有参数的情况下调用它。您可能希望使用特定的委托类型,例如

static private void TryThisFunc(Action action)
{
    try
    {
        action();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}