Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在扩展方法中使用函数作为参数?_C#_Extension Methods - Fatal编程技术网

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));