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

本文关键字:函数 两个 泛型 参数 何使用 泛型类型 说明符 | 更新日期: 2023-09-27 18:24:37

如果我的问题措辞不好,我很抱歉,但正是因为我不知道如何用词表达问题,所以我无法在谷歌上轻松搜索。

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

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

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

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); 
    }
}