2010-02-07 74 views
2

我試圖讓我的腦袋圍繞着Predicate<T>類型,當T是任何東西時我都能理解它,除了布爾。如果您有Predicate<bool>,我不明白如何使用它。謂詞<Bool>,毫無意義或有用嗎?

有人可以告訴我這是一件愚蠢的事情嗎?或者它真的有用嗎?

Predicate<T>已經返回一個布爾,所以然後在一個布爾測試條件似乎有點毫無意義......或者我錯了嗎?

+1

如果您認爲它沒用,請不要使用它。或者我在這裏錯過了什麼? – 2010-02-07 22:39:07

+0

這是一個C#的問題嗎? – Manuel 2010-02-07 22:39:24

+0

@Aaron:我問的原因我想知道它是否有任何用途,因爲我想不出任何... – 2010-02-07 22:44:06

回答

9

謂詞表示一個函數,它接受一個T(任何類型)並返回一個bool。

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

你基本上是正確的。對於布爾來說,並沒有多少用處。我的意思是,只有你可以用布爾做很多事情。

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); 

這當然是用處不大,只是因爲只有這麼多東西,你可以用一個布爾做的。

1

嗯,只是因爲你有一個布爾已經不意味着你想返回完全的布爾。例如,我可以想象如果參數爲false,則返回true的IsFalse謂詞。