有人能为这三位最重要的代表提供一个很好的解释(希望有例子):
谓语
行动
FUNC
C#开发人员应该注意哪些其他代表?
您多久在生产代码中使用它们?
Predicate
:基本上Func
; 问一个问题"指定的参数是否满足委托所代表的条件?" 用于像List.FindAll这样的东西.
Action
:根据参数执行操作.非常通用.在LINQ中使用不多,因为它基本上意味着副作用.
Func
:在LINQ中广泛使用,通常用于转换参数,例如通过将复杂结构投影到一个属性.
其他重要代表:
EventHandler
/ EventHandler
:遍布WinForms
Comparison
:喜欢IComparer
但是以代表的形式.
Action
,Func
并且Predicate
都属于委托家人.
Action
:Action可以接受n个输入参数,但返回void.
Func
:Func可以接受n个输入参数,但它总是返回所提供类型的结果.Func
,这里T1,T2,T3是输入参数,TResult是它的输出.
Predicate
:谓词也是Func的一种形式,但它总会返回bool.简单来说就是它的包装Func
.
除了Jon的回答,还有
Converter
:它本质上是Func
,但有语义.由List.ConvertAll和Array.ConvertAll使用,但个人还没有在其他任何地方看到它.