gpt4 book ai didi

c# - 我可以使用标准委托(delegate)而不是谓词吗?

转载 作者:行者123 更新时间:2023-11-30 16:40:10 27 4
gpt4 key购买 nike

我知道我可以使用匿名方法或 lambda 表达式,例如:

myObjects.RemoveAll(delegate (MyObject m) { return m.X >= 10); });


myObjects.RemoveAll(m => m.X >= 10));

但我不知道是否可以使用常规委托(delegate) (delegate bool X (MyObject o) ),我的尝试失败了。

即创建委托(delegate),将其设置为方法 a,然后将委托(delegate)实例作为谓词传递。

最佳答案

出于兼容性原因,您必须显式实例化委托(delegate),即使不同委托(delegate)的签名是兼容的。这没有很好的记录,请参阅 this question 中的讨论。 .

(非常冗长的)语法示例执行此操作:

public void Test()
{
var l = new List<MyObject>();
// The following three lines
var x = new X(my => string.IsNullOrEmpty(my.Name));
var p = new Predicate<MyObject>(x);
l.RemoveAll(p);
// ...will accomplish the same as:
l.RemoveAll(my => string.IsNullOrEmpty(my.Name));
}

private delegate bool X(MyObject m);

private class MyObject
{
public string Name { get; set; }
}

关于c# - 我可以使用标准委托(delegate)而不是谓词吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818289/

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