带参数和空返回的函数类型

Mis*_*tyD 0 c# lambda function-pointers

我想知道为什么这不起作用?编译器说 void 不能与Func类型一起使用。在这种情况下,我有什么选择

  Func<int,void> func1 =  (x) => { Console.WriteLine("Hello World"); };
Run Code Online (Sandbox Code Playgroud)

Pav*_*ski 5

Func<T, TResult>委托有一个参数并返回由 指定的类型的值TResult,您不能使用void,因为它指定该方法不返回任何值并且不能用作类型参数。

您可以Action<T>在示例中使用委托,它只有一个参数并且不返回值

Action<int> action = (x) => { Console.WriteLine("Hello World"); };
Run Code Online (Sandbox Code Playgroud)

由于x未使用参数,您可以使用无参数Action委托

Action action = delegate { Console.WriteLine("Hello World"); };
Run Code Online (Sandbox Code Playgroud)