如何获得任何类型的两个可空数中的较大者?

时间:2019-07-05 20:14:45

标签: c# generics

如何比较任何类型的两个可为空的数字(整数,十进制,浮点数)并返回很大的两个数

我试过了,但是只适用于整数

public static int? Compare(int? value1, int? value2)
{
    if(value1> value2)
    return value1;

    return value2;
}

我尝试过此操作,但不能在类型T的操作数上使用>运算符。

public static Compare<T>(T value1, T value2)
{
    if(value1> value2)
    return value1;

    return value2;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您只能将>运算符与数字一起使用。对于更通用的方法(例如,如果您还想对字符串使用该方法),则可以使用IComparable接口:

public static T Compare<T> (T value1, T value2) where T : IComparable<T>
{
    if (value1.CompareTo(value2) > 0)
        return value1;

    return value2;
}