C# 编写泛型函数

C# 编写泛型函数,c#,generics,C#,Generics,我有一个简单的函数 public static int Search(List<int> list, int item){} 我想把它写成泛型函数。我还想传递列表和数组,所以我可以这样写吗 public static T Search<S,T>(S list, T item) where T : IComparable & where S : IEnumerable<T> {} 我还想传递列表和数组,所以我可以这样写吗 public static

我有一个简单的函数

public static int Search(List<int> list, int item){}
我想把它写成泛型函数。我还想传递列表和数组,所以我可以这样写吗

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:


你在找语法吗

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

既然您已经在where语句中声明,这两个在语义上是等价的。

为什么不试试看它是否有效?您的签名看起来很合理。。。。这里的问题是什么?@GeorgeT它不起作用,语法错误。@Arnab您在IComparable和where之间有一个&,请删除它。@Arnab如果您有语法错误,请将此包含在您的问题中。我认为他不想返回一个t。。。更有可能是Index@AD.Net我想同时传递列表和数组。@CarstenKönig,是的,索引更有意义,所以更新了它。
public static T Search<S,T>(S list, T item) 
  where T : IComparable 
  where S : IEnumerable<T> {}
public static T Search<T>(IEnuermable<T> list, T item) where T : IComparable
{}