【发布时间】:2019-03-08 06:54:30
【问题描述】:
我是 C# 的初学者,只是一个关于 C# 中 Predicate 和 Func 委托的区别的问题
我们知道:
public delegate bool Predicate<in T>(T obj);
public delegate TResult Func<in T, out TResult>(T arg);
如果我喜欢的话
Func<Product, bool> firstdelegate = ...
和
Predicate<Product> secondpredicate = ...
他们不一样吗?我的意思是他们都做同样的事情,那么为什么在 LINQ 的 Where() 方法中采用 Func 类型委托而不是 Predicate?
【问题讨论】:
-
如果 LINQ 在
Where中使用Predicate会很奇怪,但在其他任何地方使用Func,包括Where的其他重载。 -
class Point1 { int x,y; }和class Point2 { int x,y; }一样吗?绝对不是,但是是的,它们有相似之处。但是需要 Point1 的方法永远不会接受 Point2 实例作为参数。签名不兼容。