假设我有一个Predicate<T>,并且我想调用方法foo,并且谓词返回true,我想调用方法栏,谓词返回false,我该怎么做:
Predicate<int> p = i => i > 0
foo(p);
bar(!p); // obviously this doesn't work
Run Code Online (Sandbox Code Playgroud)
如果谓词是a Func<int, bool> f,我可以!f(i)
您可以轻松创建一个返回"反向"谓词的方法 - 您甚至可以将其作为扩展方法:
public static Predicate<T> Invert<T>(this Predicate<T> predicate)
{
// TODO: Nullity checking
return x => !predicate(x);
}
Run Code Online (Sandbox Code Playgroud)
然后:
bar(p.Invert());
Run Code Online (Sandbox Code Playgroud)
基本上,如果你有一个Func<int, bool>- 那就是你要做的- 对于这些代表类型中的任何一个都没有任何"魔力".
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |