在哪里可以找到IComparable的CompareTo方法定义?

时间:2018-09-29 07:51:06

标签: c# oop

在哪里可以找到CompareTo方法的定义?

作为下面的代码,我可以通过实现IComparable接口来使用CompareTo方法。但是我在Utilities类中没有为CompareTo方法给出任何定义。我知道这是一个非常琐碎的问题。但是我不理解类如何在不提供其方法实现的情况下实现接口。

public class Utilities<T> where T : IComparable
    {
        public T Max(T a, T b)  
        {
            return a.CompareTo(b) > 0 ? a : b;
        }
    }

2 个答案:

答案 0 :(得分:4)

您的Utilities类未实现IComparable。您是说T必须实现IComparable。如果Utilities要实现IComparable,它将看起来像这样:

public class Utilities<T> : IComparable

您无需在CompareTo中定义Utilities方法,因为无论T是什么,都应在T中定义该方法。

例如,您不能将Foo用于T,因为Foo没有实现IComparable

class Foo { 
   // you must add a CompareTo method here in order to use Foo as T
   // you must also add ": IComparable"
}

但是您可以使用stringintfloat,因为它们确实实现了IComparable

答案 1 :(得分:2)

您正在使用generic type constraint而不是实现IComparable接口,这意味着T必须从IComparable实现。

如果要实现IComparable接口,则需要在类名之后和:约束关键字之前使用where

public class Utilities<T> : IComparable 
    where T : IComparable

{
    public int CompareTo(object obj)
    {

    }

    public T Max(T a, T b)
    {
        return a.CompareTo(b) > 0 ? a : b;
    }
}