编写通用函数

时间:2014-07-03 14:01:24

标签: c# generics

我有一个简单的功能

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> {}

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

立即语法错误是&,将其更改为:

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语句中声明了这两个语义在语义上等效。

答案 2 :(得分:1)

  

另外我想传递List和Array,所以我可以像这样写一下吗?

如果您想将ArrayList都传递给您的函数,那么您需要找到ArrayList<T>实现的公共类型,这可能是IEnumerable<T>

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

答案 3 :(得分:1)

您在寻找语法吗?

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