C# 如何在扩展方法中使用函数作为参数?
我读过一篇文章,建议在扩展方法中使用函数而不是谓词,所以我正在尝试这样做C# 如何在扩展方法中使用函数作为参数?,c#,extension-methods,C#,Extension Methods,我读过一篇文章,建议在扩展方法中使用函数而不是谓词,所以我正在尝试这样做 public static void Insert<T>(this ObservableCollection<T> paramOC, T NewElement, Func<T, T, bool> condition) { //code } 但是我得到一个错误,它表明delete System.Func不接受1个参数 但是,如果我使
public static void Insert<T>(this ObservableCollection<T> paramOC, T NewElement, Func<T, T, bool> condition)
{
//code
}
但是我得到一个错误,它表明delete System.Func不接受1个参数
但是,如果我使用函数的谓词intead,它就可以工作
我错过了什么
非常感谢。您需要的是Func
(它接受一个参数并返回bool
),而不是Func
谓词之所以有效,是因为它接受一个参数并返回bool
,因此它与lambda表达式匹配。Func
需要两个参数并返回与表达式不匹配的bool,因此会出现错误。您需要Func
(接受一个参数并返回bool
),非Func
Predicate
之所以有效,是因为它接受一个参数并返回bool
,因此它与lambda表达式匹配。Func
需要两个参数并返回bool,而bool与您的表达式不匹配,因此会出现错误。您的Func
接受两个参数并返回bool
你有两个选择
正如Selman22所说,将其更改为Func
称之为(e1,e2)=>…
您的Func
接受2个参数并返回bool
你有两个选择
正如Selman22所说,将其更改为Func
称之为(e1,e2)=>…
myOC.Insert(myNewElement, e=>e.Name.CompareTo(myNewElement.Name) > 0));