Main() とコマンドライン引数 (C# プログラミング ガイド)Main() and command-line arguments (C# Programming Guide)

Main メソッドは、C# アプリケーションのエントリ ポイントですThe Main method is the entry point of a C# application. (ライブラリおよびサービスでは、エントリ ポイントとしての Main メソッドは必要ありません)。アプリケーションを起動すると、最初に Main メソッドが呼び出されます。(Libraries and services do not require a Main method as an entry point.) When the application is started, the Main method is the first method that is invoked.

C# プログラムのエントリ ポイントは 1 つのみです。There can only be one entry point in a C# program. Main メソッドを持つクラスが 2 つ以上ある場合、プログラムをコンパイルする際に /main コンパイラ オプションを使用して、どの Main メソッドをエントリ ポイントとして使用するかを指定する必要があります。If you have more than one class that has a Main method, you must compile your program with the /main compiler option to specify which Main method to use as the entry point. 詳細については、「/main (C# コンパイラ オプション)」を参照してください。For more information, see /main (C# Compiler Options).

class TestClass
    static void Main(string[] args)
        // Display the number of command line arguments:


  • Main メソッドは実行可能プログラムのエントリ ポイントであり、ここでプログラムの制御を開始および終了します。The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main は、クラスまたは構造体の内部で宣言されます。Main is declared inside a class or struct. Mainstatic である必要がありますが、public である必要はありませんMain must be static and it need not be public. (先ほどの例では、既定の private のアクセスを受け取ります)。外側のクラスまたは構造体は、static である必要はありません。(In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
  • Main の戻り値の型は、void または int のいずれかになります。C# 7.1 以降では Task または Task<int> になる場合もあります。Main can either have a void, int, or, starting with C# 7.1, Task, or Task<int> return type.
  • MainTask または Task<int> が返される場合に限り、Main の宣言に async 修飾子を含めることができます。If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. この条件により、async void Main メソッドが明確に除外されることに注意してください。Note that this specifically excludes an async void Main method.
  • Main メソッドを宣言する際、コマンドライン引数を含む string[] パラメーターは指定してもしなくてもかまいません。The Main method can be declared with or without a string[] parameter that contains command-line arguments. Visual Studio を使用して Windows アプリケーションを作成する場合、このパラメーターを手動で追加するか Environment クラスを使用して、コマンドライン引数を取得できます。When using Visual Studio to create Windows applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. パラメーターは、インデックス 0 のコマンドライン引数として読み取られます。Parameters are read as zero-indexed command-line arguments. C や C++ とは異なり、プログラムの名前が最初のコマンドライン引数として扱われることはありません。Unlike C and C++, the name of the program is not treated as the first command-line argument.

コンソール アプリケーションの Mainawait を使用して非同期操作を開始する必要がある場合、戻り値の型 asyncTaskTask<int> を追加することでプログラム コードを簡略化できます。The addition of async and Task, Task<int> return types simplifies program code when console applications need to start and await asynchronous operations in Main.

C# 言語仕様C# language specification

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also