2016-04-04 4 views
-8

Выполняется программа, но я немного разбираюсь в интерфейсах и как их использовать. В реализации метода 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(); 
     } 

    } 
+0

'target' - это ссылка на' obj' после кастинга на 'Program', чтобы вы могли получить доступ к' GetArea'. – juharr

ответ

4

target является переменной типа Program, который является классом. Эта переменная находится в пределах функции CompareTo, поэтому она может быть указана только в пределах функции и после ее объявления и определения i.e: Program target = (Program)obj;

Похоже, вам нужно вернуться к вступительному учебнику или онлайн-курсу на C#.

+1

Было бы яснее сказать, что это переменная, ИМО. Важно различать переменные, их значения, ссылки и объекты - это не похоже на то, что метод создает экземпляр. –

+0

Отредактировано соответственно. –

Смежные вопросы