如何使用参数的泛型类型说明符创建两个函数的泛型函数

时间:2013-07-23 01:14:26

标签: c# generics

很抱歉,如果我的问题措辞不好,但正是因为我不知道如何说出我无法轻易在Google上搜索此问题。

基本上我只想组合这两个函数,但是在参数内部找不到泛型的通用示例?我怎么称呼参数的括号区域?类型说明符是一个真正的术语吗?

无论如何我想将它们合并为一个需要两个keyvaluepair<int, T>的函数,但我似乎无法使语法正确。

public class BinarySearchComparers:IComparer<KeyValuePair<int, string>>, IComparer<KeyValuePair<int, byte>>
  {
    public int Compare(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
    {
      return x.Key.CompareTo(y.Key); 
    }
    public int Compare(KeyValuePair<int, byte> x, KeyValuePair<int, byte> y)
    {
      return x.Key.CompareTo(y.Key);
    }
  }

1 个答案:

答案 0 :(得分:0)

public class BinarySearchComparers<T> : IComparer<KeyValuePair<int, T>>  // Declares a generic type
{
    public int Compare(KeyValuePair<int, T> x, KeyValuePair<int, T> y)
    {
        return x.Key.CompareTo(y.Key); 
    }
}

这是你想要的吗?

更新

鉴于Chris Sinclair对您的问题的理解,解决方案可能是:

public class BinarySearchComparers<U, T> : IComparer<KeyValuePair<U, T>>  // Declares a generic type
    where U : IComparable<U>  // Restricts the type U to implémentations of IComparable<U> (necessary to call CompareTo)
{
    public int Compare(KeyValuePair<U, T> x, KeyValuePair<U, T> y)
    {
        return x.Key.CompareTo(y.Key); 
    }
}