Предикат <Bool>, бессмысленно или полезно? - PullRequest
2 голосов
/ 08 февраля 2010

Я пытаюсь разобраться с типом Predicate<T>, и я могу понять это, когда T - это что угодно, кроме bool. Если у вас есть Predicate<bool>, я не вижу, как это можно использовать.

Может кто-нибудь сказать мне, если это глупо делать или оно действительно служит какой-то цели?

Predicate<T> уже возвращает bool, поэтому тестирование условия на bool кажется немного бессмысленным ... или я ошибся?

Ответы [ 2 ]

9 голосов
/ 08 февраля 2010

Предикат означает функцию, которая принимает T (любой тип) и возвращает логическое значение.

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

Ты в основном прав. Для bool не так много вариантов использования, которые приходят на ум. Я имею в виду, что с помощью 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 вы можете делать так много всего.

1 голос
/ 08 февраля 2010

Ну, если у вас уже есть бул, это не значит, что вы хотите вернуть именно этот бул. Например, я могу представить предикат IsFalse, который возвращает true, если аргумент равен false.

...