2016-04-09 10 views
0

Es tut mir leid, wenn dies sehr offensichtlich ist oder wenn diese Frage nicht zu den Fragenregeln der Site passt.Problem beim Aufrufen einer Methode in einer eigenen Klasse

Im folgenden Beispiel, wie würde ich meine Main Methode meine AverageThree Methode aufrufen? Die folgende funktioniert nicht:

namespace Test 
{ 
    class Program 
    { 
     public double AverageThree(double one, double two, double three) 
     { 
      return (one * two * three)/3; 
     } 
     static void Main(string[] args) 
     { 
      Console.WriteLine(AverageThree(3.7, 56, 998.321)); 
     } 
    } 
} 

Antwort

3

In Ihrer Klasse Program Sie zwei Arten von Funktionen:

  • statische Funktionen: Main()
  • Instanz Funktionen: AverageThree()

Und Main() ist der Einstiegspunkt für Ihre Bewerbung. Und es muss statisch sein.

Von einer statischen Funktion können Sie nur auf statischen Inhalt zugreifen. Dann ist eine Lösung, um AverageThree() als statisch zu konvertieren (zweite Lösung). Die andere Lösung besteht darin, eine Instanz Program zu erstellen und die Funktion AverageThree() aufzurufen.

Sie könnten eine Instanz der Klasse Programm erstellen:

namespace Test 
{ 
    class Program 
    { 
     public double AverageThree(double one, double two, double three) 
     { 
      return (one * two * three)/3; 
     } 
     static void Main(string[] args) 
     { 
      Program p = new Program(); 
      Console.WriteLine(p.AverageThree(3.7, 56, 998.321)); 
     } 
    } 
} 

Oder Sie Methode AverageThree zu statisch umwandeln kann:

namespace Test 
{ 
    class Program 
    { 
     public static double AverageThree(double one, double two, double three) 
     { 
      return (one * two * three)/3; 
     } 
     static void Main(string[] args) 
     { 
      Console.WriteLine(AverageThree(3.7, 56, 998.321)); 
     } 
    } 
} 
+1

Wenn Sie nichts dagegen haben, könnten Sie mir erklären, warum ein Öffentliche Klasse konnte nicht in ihrer Klasse verwendet werden, ohne zuerst eine Instanz zu erstellen? Warum sollte der Compiler nicht erkennen, dass er in derselben Klasse ist? Oder verändert die Sichtbarkeit die Art und Weise, wie eine Methode durch das gesamte Programm verwendet wird? – Jeremy

+2

Nicht statische Methoden erfordern eine Instanz der Klasse, um sie aufzurufen. Statische Methoden können nur statische Methoden aufrufen, selbst in ihrer eigenen Klasse. Sie können einige Details [hier] (https://msdn.microsoft.com/en-us/library/s35hcfh7.aspx) als Ausgangspunkt finden. – AGB

Verwandte Themen