2016-07-23 12 views
-3

Ich habe einen Fehler und habe in meinem Buch nach Antworten gesucht und beobachtete Tutorials für dieses spezielle Thema. Die große Lücke ist eine andere Klasse, um anzuzeigen, ich PointIch verstehe nicht, warum ich bekomme 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

willkommen in unserer gemeinde. Bitte beachten Sie, dass Sie eine gute Frage stellen müssen, um Hilfe von den anderen zu erhalten. entferne unnötige Teile aus deinem Code und vereinfache sie und platziere statt dessen natürlich keine Leerzeilen. , wenn Sie die anderen wollen Zeit auf Ihr Problem zu verbringen, müssen Sie die erste sein, Zeit zu kümmern und verbringen –

Antwort

3

Ihre ObjectCount() Methode ist static Methode aufgerufen hinzugefügt, während die Eigenschaft nicht.

Wie Sie aus einer Eigenschaft lesen, die nicht in Ihrem Code zugeordnet ist. Entfernen Sie also das statische Schlüsselwort aus der Methodensignatur.

0

1) Bitte posten Sie den vollständigen Code in separaten Blöcken, bitte teilen Sie den Leuten auch mit, wo genau Sie den Fehler erhalten;

2) Ich vermute, dass der Fehler CS0120 von der Zeile kommt: Console.WriteLine ("Anzahl der Point-Objekte: {0}", Point.ObjectCount());

Noch einmal, ich vermute, dass Sie alle erstellten Point-Objekte zählen wollten. Ihr Fehler besteht darin, objectCount ein Instanzmitglied zu machen.

Sie sehen, wird jede Instanz von Point-Klasse seine eigene Object haben, und es wird immer 1 nach Konstruktor beendet sein. Aus dem gleichen Grund können Sie Point.ObjectCount() nicht aufrufen und objectCount von diesem Objekt zurückgeben, da objectCount kein statisches Element ist, sondern an eine Instanz gebunden ist.

Um Ihren Code zu reparieren, machen Sie objectCount statisch. Auf diese Weise würde nur ein objectCount für alle Instanzen von Point existieren.