2016-07-23 9 views
-3

私は1つのエラーがあり、私の本で答えを探し、この特定の課題のチュートリアルを見ました。大きなギャップが、私は追加別のクラスを示すためには、あなたの財産ではないながらPointなぜ私が理解できないのですかCS0120

class Program 
    { 
     private static Point another; 
     static void Main(string[] args) 
     { 
      Point origin = new Point(1366, 768); 
      Point bottomRight = another; 
      double distance = origin.DistanceTo(bottomRight); 
      Console.WriteLine("Distance is: {0}", distance); 
      Console.WriteLine("Number of Point objects: {0}", Point.ObjectCount()); 
     } 
    } 
class Point { 
    private int x, y; 
     private int objectCount = 0; 
     public Point() 
     { 
      this.x = -1; 
      this.y = -1; 
      objectCount++; 
     } 
     public Point(int x, int y) 
     { 
      this.x = x; 
      this.y = y; 
      objectCount++; 
     } 
     public double DistanceTo(Point other) 
     { 
      int xDiff = this.x - other.x; 
      int yDiff = this.y - other.y; 
      double distance = Math.Sqrt((xDiff * xDiff) + (yDiff * yDiff)); 
      return distance; 
     } 
     public static int ObjectCount() 
     { 
      **return objectCount;** 
     } 
    } 
+0

私たちのコミュニティにようこそ。他の人の助けを受けるために良い質問を投稿しなければならないことに注意してください。あなたのコードから不要な部分を削除し、それを単純化します。もちろん、代わりにスペースを入れないでください。 他の人があなたの問題に時間を費やすようにしたい場合は、まずケアして時間を費やす必要があります –

答えて

3

と呼ばれるあなたのObjectCount()方法はstatic方法です。

public static int ObjectCount() 

あなたのコードに割り当てられていないプロパティから読んでいるので。したがって、のstaticキーワードをメソッドのシグネチャから削除してください。

public int ObjectCount() 
{ 
    return objectCount; 
} 
0

1)完全なコードを別々のブロックに投稿してください。また、正確にエラーが発生した場所を教えてください。

2)私の推測では、エラーCS0120は次の行から来ると考えられます。Console.WriteLine( "Number of Point objects:{0}"、Point.ObjectCount());

もう一度、作成したすべてのPointオブジェクトを数えたいと思います。あなたの間違いは、objectCountをインスタンスメンバにすることです。

あなたは、Pointクラスのすべてのインスタンスが独自のobjectCountを持ち、コンストラクタが終了すると常に1になることがわかります。 ObjectCountは静的メンバーではないため、Point.ObjectCount()をコールしてobjectCountを返すことはできません。これは、インスタンスにバインドされています。

コードを修正するには、objectCountを静的にします。そうすることで、Pointのすべてのインスタンスに対してobjectCountが1つだけ存在します。

関連する問題