用于部分排序的IComparable类型接口

Jes*_*xer 3 c# interface constraints

我试图定义一个泛型函数来给出一组参数的最大值.它是这样的:

    public static TResult Max<TResult>(params TResult[] items)
    {
        TResult result = items[0];
        foreach (var item in items)
        {
            if (item > result)
                result = item;
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

这一切都很好,除了编译器在"item> result"行上出现问题.我需要的是一种约束TResult有一个>运算符(或<也可以工作)的方法.但是,我没有看到任何现成的接口来执行此操作.由于这是部分排序,这似乎是一项非常常见的任务.我在巨大的.NET文档中遗漏了什么吗?

Tud*_*dor 5

你可以使用IComparable:

public static IComparable Max<TResult>(params IComparable[] items)
{
    IComparable result = items[0];
    foreach (var item in items)
    {
        if (item.CompareTo(result) > 0)
            result = item;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)