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

本文关键字:两个 比较 泛型方法 | 更新日期: 2023-09-27 18:24:08

我需要创建一个返回两个参数中较大值的泛型方法。运算符>和<不要工作。这是我的方法签名:

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

我在C#方面还是个新手,在泛型类型方面是个新手。

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

由于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;
}