я написал следующий кодIComparable Реализация
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;
}
}
Однако это ошибка Error 1 Operator '>' не может быть применен к операндам типа 'ConsoleApplication1.Circle' и 'ConsoleApplication1.Circle'
я реализовал оба метод и не мог понять ошибку
'IComparable' не говорит' 1', '0',' -1' - он говорит '<0', '0', '> 0'. В качестве общего примера это должно быть выражено как '> 0', а не' == 1' –
Хорошая точка. Изменено. – user1429080