Вопрос

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

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

Predicate<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 можно сделать очень много вещей.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top