38

ほとんどの C# プログラムでメイン メソッドのエントリ ポイントが静的なのはなぜですか?

4

8 に答える 8

60

インスタンス メソッドを呼び出すには、オブジェクトのインスタンスが必要です。これは、プログラムを開始するProgramために、メソッドを呼び出すためにCLR が say のインスタンスを作成する必要があることを意味しますMain。したがって、のコンストラクターがProgram前に実行さMainれ、メインを持つという目的が完全に無効になります。

于 2010-03-02T21:36:31.077 に答える
16

私は質問を好転させます。Main をインスタンス メソッドにできる機能を実装することの魅力的な利点は何ですか? 機能は高価です。説得力のあるメリットがなければ、実装されません。

Main をインスタンス メソッドにすることを許可する正当な理由はありますか?

于 2010-03-03T01:05:40.473 に答える
4

概念的には、スタティックのインスタンスは1つだけです。そして、静的メソッドは、プログラムの単一の開始点のイディオムにうまく対応します。言語設計者は、mainメソッドで使用する特別なプログラムクラスを作成することもできますが、エントリポイントとして単一の静的関数を作成することを選択しました。いくつかのレベルでは、それは本当に単なる設計上の選択です。

于 2010-03-02T21:39:28.910 に答える
1

そうしないと、オブジェクトを作成する必要があり、コンストラクターを実行すると悪影響が生じる可能性があるためです。

于 2010-03-02T21:35:48.970 に答える
1

そうでなければ、メインの前にクラスインスタンスをどのように作成できますか?

于 2010-03-02T21:36:17.177 に答える
0

静的メソッドは、インスタンスを作成せずに実行できます。慣例により、それらはmain呼び出すデフォルトのメソッドとしてメソッドを持っています。

于 2010-03-02T21:45:13.420 に答える
0

.NET runtimeメソッドを呼び出しますMain。(注: Main は、別の場所から、たとえば ExampleClass の別のメソッドのコード Main() からも呼び出すことができます。)staticキーワードは、instanceofなしでメソッドにアクセスできるようにしExampleClassます。そのため、Main メソッドはエントリ ポイントであり、静的に宣言する必要があります。

そうしないと、プログラムにはインスタンスが必要になりますが、どのインスタンスにもプログラムが必要になります。

circular dependency解決不可能なメインがエントリ ポイントとして使用されることを避けるため


参照: http://en.wikipedia.org/wiki/C_Sharp_(programming_language

于 2010-03-02T21:49:03.810 に答える
-3

クラスのすべてのオブジェクトにはメインメソッドと他のメソッドと変数が含まれているため、すべてのオブジェクトに含まれる各変数とメソッドの個別のコピーがありますが、メインクラスのコピーはそれらの間で1つだけであるため、いくつかのオブジェクト間でコピーを作成しますメインメソッドを静的にする。

于 2011-07-27T09:20:36.247 に答える