IComparable实施

Aks*_*ita 0 c#

我写了以下代码

 class Program
{
    static void Main(string[] args)
    {
        Circle c1 = new Circle(5);
        Circle c2 = new Circle(10);
        Console.WriteLine(c1.Area().ToString());
        if (c1>c2)
        {
        }
    }
}
public class Circle:System.IComparable<Circle>,IComparable
{
    public int radius { get;private set; }
    public double Area()
    {
        return Math.PI * radius * radius;
    }
    public Circle(int radius)
    {
        this.radius = radius;
    }
    public int CompareTo(Circle c)
    {
        if (c.Area() == this.Area())
            return 0;
        if (c.Area() > this.Area())
            return 1;
        return -1;
    }
    public int CompareTo(Object c)
    {
        if (((Circle)c).Area() == this.Area())
            return 0;
        if (((Circle)c).Area() > this.Area())
            return 1;
        return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

但错误错误1运算符'>'无法应用于'ConsoleApplication1.Circle'和'ConsoleApplication1.Circle'类型的操作数

我已经实现了这两种方法,但无法确定错误

Dav*_*ave 6

您需要重载>运算符才能执行您正在尝试的操作:

  public static bool operator > (Circle c1, Circle c2)
  {
     return (c1.CompareTo(C2) > 0);
  }  
Run Code Online (Sandbox Code Playgroud)