如何比较泛型方法中的两个值?

时间:2014-09-24 11:22:07

标签: c# generics comparison

我需要创建一个返回两个参数中更多的泛型方法。运营商>和<不工作。这是我方法的签名:

public static T Greater<T>(ref T a, ref T b)
{
    if (a > b) 
    {
       return a;
    }
    else 
    {
       return b;
    }
}

我在C#中相当新秀,在通用类型中是全新的。

1 个答案:

答案 0 :(得分:10)

由于T可以是任何类型,因此无法保证T会使><运算符超载。添加IComparable<T>约束表示T必须实现包含名为CompareTo的方法的IComparable<T>,然后您可以使用该方法来比较您的对象:

public static T Greater<T>(ref T a, ref T b) where T : IComparable<T>
{
    if(a.CompareTo(b) > 0) return a;
    else return b;
}