2010-02-07 6 views
2

J'essaie de comprendre le type Predicate<T> et je peux le comprendre quand T est n'importe quoi, sauf bool. Si vous avez Predicate<bool>, je ne vois pas comment cela peut être utilisé. Est-ce que quelqu'un peut me dire si c'est une chose stupide à faire ou si elle sert réellement un but?Prédire <Bool>, inutile ou utile?

Predicate<T> retourne déjà un bool, alors tester une condition sur un bool semble un peu inutile ... ou ai-je tort?

+1

Si vous pensez que c'est inutile, ne l'utilisez pas. Ou est-ce que je manque quelque chose ici? –

+0

Est-ce une question C#? – Manuel

+0

@Aaron: Je demande parce que je veux savoir si elle a vraiment des utilisations, car je ne peux pas penser à tout ... –

Répondre

9

Prédicat signifie une fonction qui prend un T (n'importe quel type) et renvoie un booléen.

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

Vous avez pour la plupart raison. Pour Bool, il n'y a pas beaucoup d'utilisations qui viennent à l'esprit. Je veux dire, il y a tellement de choses que tu peux faire avec un bool.

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

Vous pouvez l'utiliser comme ceci:

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

Il est certainement moins utile, tout simplement parce qu'il n'y a que tant de choses que vous pouvez faire avec un bool.

1

Eh bien, juste parce que vous avez déjà un booléen ne veut pas dire que vous voulez retourner exactement ce bool. Par exemple je peux imaginer le prédicat IsFalse qui retourne vrai si l'argument est faux.