Func委托没有返回types

所有的Func代表都会返回一个值。 什么是.NET代表,可以使用返回无效的方法?

所有Func代表返回一些东西; 所有的Action代表都返回void。

Func<TResult>接受参数并返回TResult:

 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> (以及其他最多四个参数)。 所有这些( Action<T>除外)都是.NET 3.5(在System.Core中定义)的新增function。

…没有参数,并有一个void返回types?

我相信Action是解决这个问题的方法。

所有的Func代表至less有一个参数

这不是真的。 它们都至less有一个types的参数,但是这个参数决定了返回types。

所以Func<T>接受任何参数并返回一个值。 当你不想返回一个值时使用ActionAction<T>

尝试System.Func<T>System.Action

偶尔你会想为事件处理编写一个委托,在这种情况下,你可以利用System.EvenHandler<T> ,除了应该从EventArgs派生的第二个参数以外,它隐式地接受一个objecttypes的参数。 EventHandlers将返回void

我个人发现这在testing中用于在函数体中创build一次性callback很有用。