Mainメソッド
プログラムのエントリーポイント
C#のプログラムには必ずクラスが1つ以上存在し、その中にMainという名前のメソッドを定義する必要があります。先ほどのサンプルコードでは、このメソッドはProgramクラス内に記述されています。
ただし、新しいバージョンのC#ではMainメソッドを明示的に書かなくても大丈夫で、ファイル直下に記述したコードが自動的にMainの本体として扱われます。
- C#プログラムの実行は、
Mainメソッド内部の最初の1行から始まります。 - メソッド名の
Mainは先頭のMを大文字にしなければなりません。
Mainメソッドの最も簡素な記述形式:
static void Main( )
{
処理文
}Code language: JavaScript (javascript)
Mainメソッドが複数あっても、まったく無くてもエラーになり、必ず1つだけ定義するルールです。
実演用に、VS2022を使ってWindows専用の.NET Frameworkプロジェクトを作成します。

下記のコンソールアプリケーションテンプレートを選択してください。

フレームワークバージョンは最新の.NET 4.8.1を選びます。
作成直後のProgram.csには以下のコードが自動生成されます
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloDemo
{
internal class Program
{
static void Main(string[] args)
{
}
}
}
Code language: PHP (php)
上部のusing文は複数の名前空間を読み込む記述で、これらの名前空間に定義された.NET標準クラスを利用できるようになります。
Mainメソッドの中に1行コードを追加します:
Console.WriteLine(“hello foxdevelop.com”);

Visual Studio上部の緑色三角ボタン「Start」をクリックしてプログラムを実行します。

プログラム実行時は、Main内の最初の行が優先的に実行されます。
Mainメソッドをもう1つ複製して貼り付けると、即座に構文エラーが表示されます

同一名前空間内に同名のメソッドを複数定義できないのが原因です。ここで2つの別々の名前空間を作成して試してみます。

赤い波線エラーは消えて一見正常に見えますが、ビルドを実行すると
Startをクリック

ビルドエラーが発生し、画面下部のError Listウィンドウにエラー内容が出力されます

Error Listパネルが表示されていない場合は、上部メニューバーから表示させられます。

エラーリストには、不具合の発生箇所が明記されます

空白文字(Whitespace)
コード内の空白文字とは、画面に出力が表示されない文字の総称です。コンパイラはソースコード中の空白をすべて無視するため、開発者はコードの可読性向上・構造整理を目的に空白を挿入します。
代表的な空白文字は以下の通り:
- 半角スペース(Space)
- タブ文字(Tab)
- 改行文字(New line)
- 復帰文字(Carriage return)
例:下記2つのコードは見た目のレイアウトが大きく異なりますが、コンパイラは完全に同じ処理と判断します
// 整形済みの記述
Main()
{
Console.WriteLine("Hi, there!");
}
// 詰めて記述したバージョン
Main(){Console.WriteLine("Hi, there!");}Code language: JavaScript (javascript)
下は通常の空白を含むMainメソッドの記述例です
static void Main(string[] args)
{
Console.WriteLine("hello foxdevelop.com");
}Code language: JavaScript (javascript)
すべての空白を削除し1行に圧縮した場合でも、プログラムは正常にビルドでき、コンパイラ側に差異は生まれません。
static void Main(string[] args){Console.WriteLine("hello foxdevelop.com");}Code language: JavaScript (javascript)

文(Statements)
C#の文の文法はC、C++に近い仕様です。本章では文の基本ルールを解説し、各種特殊な文については後の章で詳しく説明します。
文とは1行のソースコード命令で、データ型の定義やプログラムへの実行指示を記述します。
単純な文には末尾にセミコロン ; を記述する必要があります。下の連続する2行の例:1行目は整数型変数var1を宣言し5を代入、2行目は変数の値をコンソール画面に出力します。
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);Code language: JavaScript (javascript)

上記Mainの例には2つの文が含まれており、以前の実演は1文のみでした。最初のコードではvar1という整数変数を作成し数値5を格納、2行目はテキストをコンソール出力します。文字列内の{0}はプレースホルダーで、後ろに指定したvar1の値に置き換わります。
コードブロック(Blocks)
コードブロックは一対の波括弧で0個以上の文を囲んだもので、文法上は単一の文として扱われます。
先ほどの2つの文を波括弧で囲むと、完全なコードブロックになります:
{
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
}Code language: JavaScript (javascript)

コードブロックの基本ルール:
- 文法上1文しか記述できない箇所で複数の処理を記載したい場合、全部の文をコードブロックで囲みます。
- 一部の文法構文は必ずコードブロックを使用する必要があり、単一文で代用できません。
- 単純文の最後にはセミコロンが必要ですが、コードブロックの最後にはセミコロンを付けません。コンパイラは閉じ波括弧後のセミコロンを空文として許可しますが、非推奨の書き方です。
図解説明:
{
int var2 = 5; // 個別の文は末尾にセミコロン
System.Console.WriteLine("The value of var1 is {0}", var1); // 個別の文は末尾にセミコロン
} // 閉じ括弧の後にセミコロン不要Code language: JavaScript (javascript)

通常の独立した文には末尾に ; を記述します

下記の完全サンプルはコピーして実行可能です
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloDemo
{
internal class Program
{
static void Main(string[] args)
{
{
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
}; ; ; ;
}
}
}
Code language: PHP (php)
プログラムのエントリーポイント