gpt4 book ai didi

c# - 如何反转 System.Predicate

转载 作者:行者123 更新时间:2023-11-30 13:55:57 25 4
gpt4 key购买 nike

假设我有一个 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)

最佳答案

您可以轻松地创建一个方法来返回“倒置”谓词 - 您甚至可以将其作为扩展方法:

public static Predicate<T> Invert<T>(this Predicate<T> predicate)
{
// TODO: Nullity checking
return x => !predicate(x);
}

然后:

bar(p.Invert());

基本上,如果你有一个 Func<int, bool>,这正是你会做的- 这些委托(delegate)类型中的任何一种都没有任何“魔力”。

关于c# - 如何反转 System.Predicate<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com