我有一个简单的功能
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> {}
答案 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,所以我可以像这样写一下吗?
如果您想将Array
和List
都传递给您的函数,那么您需要找到Array
和List<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> {}