なぜほとんどのC#プログラムの静的でmainメソッドのエントリポイントはありますか?
-
23-09-2019 - |
質問
なぜ、ほとんどのC#のプログラムの主なメソッドのエントリポイント静的な?
解決
はインスタンスメソッドを呼び出すためには、オブジェクトのインスタンスを必要としています。この手段は、あなたのプログラムを起動するために、CLRは、メソッドProgram
を呼び出すために言うのMain
のインスタンスを作成する必要があります。したがってProgram
のコンストラクタは完全にメインを持つことの目的に反しMain
前に実行します。
他のヒント
私は周りの質問を回すと思います。主なインスタンスメソッドできるようにする機能を実装するための魅力的な利点は何ですか?特長は高価であり、何の説得力の恩恵がない場合、彼らは実装されません。
あなたが主なインスタンスメソッドであることを許可すべき理由は本当に良い理由を持っていますか?
は概念的にはあなただけの静的のインスタンスを1つ持っています。そして、静的メソッドは、プログラムのための単一の凝視ポイントのイディオムによくマッピングされます。言語設計者は、mainメソッドで使用する特殊なプログラムのクラスを作成したが、エントリポイントとして単一の静的関数を作成することを選んだかもしれません。いくつかのレベルではその実際には設計上の選択ます。
それ以外の場合は、オブジェクトを作成しなければならない、とコンストラクタを実行すると、マイナスの副作用を引き起こす可能性があるため。
どのようにあなたがそれ以外の場合は、メインの前に、あなたのクラスのインスタンスを作成することができます?
.NET runtime
はMain
メソッドを呼び出します。 (注:主はまた、例えばでExampleClassの別の方法でコードのmain()から、他の場所から呼び出すことができる。)static
キーワードはinstance
のExampleClass
せずにアクセス可能な方法を作ります。だから、主な方法は、エントリー・ポイントであり、静的に宣言されている必要があります。
解決できないのそれ以外の場合は、プログラムが必要になります インスタンスが、どのインスタンスだろう プログラムを必要とします。
circular dependency
の主がエントリポイントとして使用されることを避けるために<時間>
参照: http://en.wikipedia.org/wiki/C_Sharp_(programming_language
静的メソッドは、インスタンスを作成せずに実行することができます。慣例により、彼らは、コールにデフォルトの方法としてmain
メソッドを持っています。
は、クラスのすべてのオブジェクトのための主要な方法と他の方法と変数を含む、すべてのオブジェクトが、メインクラスのコピーに含まれる各変数やメソッドの独立したコピーは、それらの間だけ1とその数のコピーを作成することがあります私たちは、静的としてmainメソッドを作成する必要がオブジェクトます。