编写一个泛型函数

本文关键字:一个 泛型 函数 | 更新日期: 2023-09-27 18:11:23

我有一个简单的函数

public static int Search(List<int> list, int item){}

我想把它写成泛型函数。我还想传递List和Array,所以我可以像这样写吗?

public static T Search<S,T>(S list, T item) where T : IComparable & where S : IEnumerable<T> {}

编写一个泛型函数

直接语法错误是&,更改为:

public static T Search<S,T>(S list, T item) 
  where T : IComparable 
  where S : IEnumerable<T> {}

列表和数组都实现了IEnumerable<T>,所以你可以完全摆脱S类型:

public static T Search<T>(IEnuermable<T> list, T item) where T : IComparable
{}

由于您已经在where语句中声明了这一点,因此这两者在语义上是等价的。

int Search<T> (IEnumerable<T> list, T item)

您在寻找语法吗?

    public static T Search<S,T>(S list, T item) where T : IComparable where S : IEnumerable<T> {}

我还想传递List和Array,所以我可以像这样写吗?

如果你想把ArrayList都传递给你的函数,那么你需要找到一个ArrayList<T>都实现的公共类型,可以是IEnumerable<T>:

public static T Search<T>(IEnumerable<T> source, T item)