假设我有一个
如果谓词是一个
Predicate<T>
,我想用返回 true 的谓词调用方法 foo,并且我想用返回 false 的谓词调用方法 bar,我该怎么做呢?Predicate<int> p = i => i > 0
foo(p);
bar(!p); // obviously this doesn't work
如果谓词是一个
Func<int, bool> f
,我可以使用 !f(i)
。
Predicate<T>
类似于Func<T, bool>
,所以我不觉得有什么问题...!f(i)
是正确的答案。 - xanatosfoo
和bar
方法有一个类型为Predicate<int>
而不是int
的参数。!p(i)
是p(i)
的否定,产生一个int
而不是Predicate<int>
,因此你的建议在这种情况下不适用。 - stakx - no longer contributingFunc<int,bool>
的否定形式,我说他也可以为Predicate<int>
做同样的事情。 - xanatos