所有Func委托都返回一个值。哪些.NET委托可以用于返回void的方法?


当前回答

偶尔你会想写一个事件处理的委托,在这种情况下,你可以利用系统。EvenHandler<T>,它隐式接受一个object类型的参数,以及应该从EventArgs派生的第二个参数。EventHandlers将返回void

我个人认为,在测试过程中,这对于在函数体中创建一次性回调非常有用。

其他回答

... 不接受参数,并有一个无效返回类型?

我相信行动可以解决这个问题。

所有Func委托都会返回一些东西;所有Action代表返回为空。

Func< result >不带参数,返回result:

public delegate TResult Func<TResult>()

Action<T>接受一个参数并且不返回值:

public delegate void Action<T>(T obj)

Action是最简单的“裸”委托:

public delegate void Action()

还有Func<TArg1, TResult>和Action<TArg1, TArg2>(以及其他多达16个参数)。所有这些(除了Action<T>)都是。net 3.5(在System.Core中定义)的新特性。

试系统。Func<T>和System。行动

所有Func委托至少接受一个参数

这不是真的。它们都至少有一个类型参数,但该参数决定返回类型。

所以Func<T>不接受参数并返回一个值。当您不想返回值时,使用Action或Action<T>。

偶尔你会想写一个事件处理的委托,在这种情况下,你可以利用系统。EvenHandler<T>,它隐式接受一个object类型的参数,以及应该从EventArgs派生的第二个参数。EventHandlers将返回void

我个人认为,在测试过程中,这对于在函数体中创建一次性回调非常有用。