2

我试图Predicate<T>理解这种类型,当 T 是任何东西时,我可以理解它,除了 bool。如果你有Predicate<bool>,我不知道如何使用它。

有人可以告诉我这是一件愚蠢的事情还是真的有目的?

Predicate<T>已经返回一个布尔值,所以在布尔值上测试一个条件似乎有点毫无意义......还是我弄错了?

4

2 回答 2

9

Predicate 表示一个接受 T(任何类型)并返回 bool 的函数。

Predicate<int> isEven = i => i % 2 == 0;

你基本上是对的。对于 bool,想到的用途并不多。我的意思是,你可以用一个布尔值做很多事情。

Predicate<bool> isFalse = input => !input;
Predicate<bool> isTrue = input => input;

你可以这样使用它:

var listOfBools = new List<Bool>() { true, false, false, true, true };
var trues = listOfBools.FindAll(isTrue);
var falses = listOfBools.FindAll(isFalse);

它肯定没那么有用,仅仅是因为你只能用一个 bool 做很多事情。

于 2010-02-07T22:41:51.567 回答
1

好吧,仅仅因为你已经有一个 bool 并不意味着你想准确地返回那个 bool。例如,我可以想象 IsFalse 谓词在参数为假时返回真。

于 2010-02-07T22:41:38.540 回答