この章のテーマ §
プログラムの実行が開始された時に最初に実行される機能の書き方を説明します。
前提知識 §
文字列の基礎, Console.WriteLineメソッド, クラス定義, メソッドの基礎
解説 §
プログラムは多数の文の集合体です。
それらが順序立てて正しく実行されねばなりません。
しかし、最初に実行される文だけはプログラムでは指定できません。
C#では特定の条件を満たすMainという名前のメソッドを最初に実行することになっています。
有効なMainの一覧は以下の通りです。
- public static void Main() { }
- public static int Main() { }
- public static void Main(string[] args) { }
- public static int Main(string[] args) { }
- public static async Task Main() { }
- public static async Task<int> Main() { }
- public static async Task Main(string[] args) { }
- public static async Task<int> Main(string[] args) { }
(publicは異なるケースがある)
しかし、簡単なケースではこれは省略できます。
サンプルソースの場合、単にConsole.WriteLine("Welcom to Main mathod!");と書くだけで同じ結果が得られます。
Mainメソッドを書くのは、データの受け渡しの都合など、それがどうしても必要な場合に限られます。
罠の数々 §
- Mainメソッドを2つ以上書くとコンパイラが困ってしまう。それはやめておこう。どうしても2つできてしまうときは、オプションで指定する方法がないわけでもない。
- Mainメソッドの宣言を省略する記法は割と新しいので、古いサンプルソースではさしたる意味もなくMainメソッドを宣言している場合がある。そのような宣言は省略可能である
参考リンク §
Main() とコマンド ライン引数
サンプルソース: kw_Main §
class SampleClass
{
static void Main(string[] args)
{
Console.WriteLine("Welcom to Main mathod!");
}
}
実行結果 §
Welcom to Main mathod!
リポジトリ §
https://github.com/autumn009/CSharpPrimer2
練習問題 §
以下のプログラムの実行結果を予測してみよう。
class SampleClass
{
static int Main()
{
Console.WriteLine("I am Main!");
return 0;
}
static int Main(int x)
{
Console.WriteLine("I am Main+x!");
return 0;
}
static int main()
{
Console.WriteLine("I am main!");
return 0;
}
static int MAIN()
{
Console.WriteLine("I am MAIN!");
return 0;
}
}
- I am Main!
- I am Main+x!
- I am main!
- I am MAIN!
- コンパイルエラー
[[解答]]