如何使用泛型集合声明泛型方法?

时间:2016-05-22 15:54:54

标签: c# generics generic-collections

例如

void f<C, T>(C<T> collection, T element) : where C has member method BindarySearch

我有两个问题:

  1. 如果可以使用泛型集合声明泛型方法?如果是这样,怎么样?
  2. 如何让C有一个特定的成员方法? 感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用界面来强制执行所需的成员:

interface IHasBinarySearch<T> : ICollection<T> {
    int BinarySearch(T item);
}

然后可以像这样定义泛型方法:

void f<C, T>(C collection, T element) where C : IHasBinarySearch<T>

此接口已经是一个通用集合(通过扩展ICollection<T>),因此无需再次指定该方法的约束。