System.Predicate <T>:这真的意味着什么,或者它是用于什么?

ric*_*ard 4 .net c# predicate definition

MSDN定义了System.Predicate 这种方式:

表示定义一组条件的方法,并确定指定的对象是否满足这些条件.

这真的意味着什么,或者它通常用于什么?因为对我来说它只是看起来像一个预定义的delegate,其方法必须采取objecttype T,并返回bool-仅此而已.

我错过了什么吗?

Sve*_*ven 10

CLR不强制类型名称的语义.

所以,是的,Predicate<T>只是一个代表接受T并返回a bool,但它意味着用于预期谓词(某个条件的测试)的地方.程序员应该尊重该惯例.例如,如果您需要没有预定义语义含义的类似委托,则可以使用Func<T, bool>.

对于编译器,a Predicate<T>或a 之间没有功能差异Func<T, bool>.但是对于另一个阅读代码的开发人员来说,只要您正确使用它,它就会提供一个关于代码应该做什么的重要提示.

同样,没有什么可以阻止我System.DayOfWeek用来存储1到7之间的任意值,而这个值实际上并不代表一周中的某一天.这将是一个愚蠢的事情,但编译器肯定会让我.由您来确保您的代码有意义,编译器无法为您执行此操作.

  • @Merlyn:我觉得你的意思是`Func <T,bool>`. (2认同)