2016-04-04 8 views
-8

プログラムは実行されていますが、私はインターフェイスとその使い方について少し知識があります。 CompareToメソッドの実装では、targetとdouble 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'は' Program'にキャストした後の 'obj'への参照で、' GetArea'にアクセスすることができます。 – juharr

答えて

4

targetクラスであるタイプProgramの変数です。それは関数内でのみ参照できるようにし、それが宣言され、定義された後、この変数は、関数CompareTo内すなわちです:Program target = (Program)obj;

あなたがC#でのコースのオンライン入門教科書を再訪たりする必要が表示されます。

+1

これは変数IMOだといっても分かります。変数、その値、参照およびオブジェクトを区別することは重要です。メソッドを使用するとインスタンスが作成されるのとは異なります。 –

+0

これに応じて編集されます。 –

関連する問題