0

对不起,如果我的问题措辞不当,但正是因为我不知道如何措辞这个问题,所以我无法在谷歌上轻松搜索到这个问题。

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

无论如何,我想将它们组合成一个需要两个的函数,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);
    }
  }
4

1 回答 1

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); 
    }
}
于 2013-07-23T01:17:27.177 回答