2016-04-09 7 views
0

これが非常に明白である場合、またはこの質問がサイトの質問ルールに適合しない場合は、すみません。独自のクラスでメソッドを呼び出すときに問題が発生する

次の例では、私のMainメソッドを私のAverageThreeメソッドと呼ぶにはどうすればいいですか?以下では動作しません:あなたのクラスで

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)); 
     } 
    } 
} 

答えて

3

を使用すると、2種類の機能持っProgram

  • 静的関数:Main()
  • インスタンス機能:​​

Main()をアプリケーションへのエントリポイントです。そして静的でなければならない。

静的関数から静的コンテンツにのみアクセスできます。次に、1つの解決策は、静的(第2の解決策)として​​を変換することです。

他の解決策は、Programのインスタンスを作成し、関数​​を呼び出すことです。

あなたのクラスのプログラムのインスタンスを作成することができます。

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)); 
     } 
    } 
} 

それとも、静的にメソッドAverageThreeを変換することができます:あなたは気にしない場合は

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

、なぜあなたは私に説明できます最初にインスタンスを作成せずにそのクラスでパブリッククラスを使用することはできませんでしたか?なぜコンパイラはそれが同じクラスにあることを認識しませんでしたか?プログラム全体を通じてメソッドの使用方法が可視性に変化するかどうか – Jeremy

+2

非静的メソッドは、それらを呼び出すためにクラスのインスタンスを必要とします。静的メソッドは、独自のクラスであっても静的メソッドを呼び出すことができます。ここでいくつかの詳細を見つけることができます(https://msdn.microsoft.com/en-us/library/s35hcfh7.aspx)。 – AGB

関連する問題