2016-07-23 91 views
-3

我有一個錯誤,並在我的書中搜索了答案,並觀看了關於這個特定主題的教程。大的差距,表示另一I類新增稱爲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() 

正在讀取未在您的代碼中分配的屬性。因此,請從方法簽名中刪除靜態關鍵字。

public int ObjectCount() 
{ 
    return objectCount; 
} 
0

1)請在單獨的塊中發佈完整的代碼,也請告訴人們你到底在哪裏得到錯誤; 2)我的猜測是,錯誤CS0120來自以下行:Console.WriteLine(「點數對象的數量:{0}」,Point.ObjectCount());

再一次,我想你想要統計所有創建的Point對象。你的錯誤是讓objectCount成爲一個實例成員。

您會發現,Point類的每個實例都有自己的objectCount,並且在構造函數完成後它將始終爲1。出於同樣的原因,您不能調用Point.ObjectCount()並從中返回objectCount,因爲objectCount不是靜態成員,而是綁定到實例。

要修復您的代碼,請使objectCount爲靜態。這樣,Point的所有實例將只有一個objectCount。

相關問題