2011-09-14 27 views
4

これは非常に初心者の質問のように聞こえるかもしれません。私は実際に私がそれを求めているのに驚いています。あまりにも静的ごRun()メソッドを宣言し静的メソッドから関数を呼び出せません

An object reference is required for the non-static field, method, or property 'myNameSpace.Program.Run()'

+0

あなたは、静的メソッド/プロパティ/フィールドと同じのインスタンスバージョンの違いを理解することの方法 – 62071072SP

+0

は、プログラミングに非常に重要な第一歩であるクラスの参照を作成して呼び出す必要があります。私はあなたがCLR Via C#のコピーを受け取ることを強くお勧めします。最初のカップルの章をスキップします(つまり、頭を回転させるチャプターをスキップします)。 – Will

答えて

5

::私は

namespace myNameSpace 
{ 
    class Program 
    { 
     static void Main() 
     { 
       Run(); // I receive an error here. 
       Console.ReadLine(); 
     } 
     void Run() 
     { 
       Console.WriteLine("Hello World!"); 
     } 
    } 
} 

static void Main()内部エラーからの関数を呼び出す方法を覚えておくように見えることはできません

static void Run() 
{ 
    Console.WriteLine("Hello World!"); 
} 
+0

私はそれを考えていたので、静的に設定し、Console.WriteLineは決して出現しませんでした。もう一度試してみてください。ありがとう! – rlemon

+0

あなたは誰が-1と投票したのか説明できますか、私の答えは間違っていますか? – evilone

2

メイク方法静的: static void Run()

7

Runstaticメソッドを呼び出すか、Run()を呼び出すオブジェクトインスタンスが必要です。だからあなたの選択肢は以下のとおりです。

1)インスタンスを使用します。

new Program().Run(); 

2)Run()が静的​​ください:

static void Run() 
{ 
    /.. 
} 
2

ファイル名を指定して実行()も、静的であるかは、作成する必要がある必要がありますnew Program().Run();

0

のようなオブジェクトの新しいインスタンス原因静的関数がインスタンスに関連付けられていません。 none static関数にはインスタンスが必要です。
したがって、新しいインスタンスを(それぞれの方法で)作成してから、関数を呼び出す必要があります。

0

もう1つの方法は、Run()メソッドをネストしたクラスの中にカプセル化して呼び出すことです。

 static void Main(string[] args) 
    { 
     new NestedClass().Run(); 
    } 

    class NestedClass 
    { 
     public void Run() 
     { 
     } 
    } 
関連する問題