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>
接受任何参数并返回一个值。 当你不想返回一个值时使用Action
或Action<T>
。
尝试System.Func<T>
和System.Action
偶尔你会想为事件处理编写一个委托,在这种情况下,你可以利用System.EvenHandler<T>
,除了应该从EventArgs
派生的第二个参数以外,它隐式地接受一个object
types的参数。 EventHandlers将返回void
我个人发现这在testing中用于在函数体中创build一次性callback很有用。