Выполняется программа, но я немного разбираюсь в интерфейсах и как их использовать. В реализации метода CompareTo я нашел целевой и двойной diff, я не смог их получить. Я понял до метода CompareTo.Что такое цель в C#? Где я могу использовать цель?
class Polygon
public virtual void Draw()
{
Console.WriteLine("Drawing Polygon");
}
interface IComparable
{
int CompareTo(object obj);
}
class Program:Polygon,IComparable
{
private double Length { get; set; }
private double Width { get; set; }
public override void Draw()
{
Console.WriteLine("Drawing: Rectangle");
}
public double GetArea()
{
return Length * Width;
}
public int CompareTo(object obj)
{
if (obj == null)
return 1;
if (!(obj is Program))
throw new ArgumentException();
Program target = (Program)obj;
double diff = this.GetArea() - target.GetArea();
if (diff == 0)
return 0;
else if (diff > 0)
return 1;
else return -1;
}
static void Main()
{
Program rect1 = new Program { Length = 10, Width = 20 };
Program rect2 = new Program { Length = 100, Width = 200 };
Console.WriteLine(rect1.CompareTo(rect2));
Console.ReadKey();
}
}
'target' - это ссылка на' obj' после кастинга на 'Program', чтобы вы могли получить доступ к' GetArea'. – juharr