基本的な文法

C#の最低限のコード

以下のコードは前ページで使用した、画面に文字を表示するだけのシンプルなコードです。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("C#プログラミング");
            Console.ReadLine();
        }
    }
}
C#プログラミング

C#のコードは、基本的に上から順に一行ずつ実行されていきます。
実際にプログラムの動作を決定しているのは13、14行目で、それ以外はプロジェクト作成時に自動生成されるコードのままです。
C#でのプログラミングは、基本的に「static void Main」と書かれている行に続く波括弧{}の中に動作を記述していきます。
それ以外の行は今は無視してください。

他の行についてはおいおい説明します。
また、Main{}以外の行はとりあえず書き換えることはないので、これ以降のサンプルコードでは省略して記述します。
(削除したりしないでください)

プロジェクトの作成後、上記のような十数行のコードではなく二行程度のコードしか自動生成されない場合は.NET6以降のコンソールアプリのテンプレートを参照してください。

関数(メソッド)

関数とは、特定の処理をひとまとめにしたものです。
C#にはあらかじめたくさんの関数が用意されていて、様々な機能が提供されています。

関数はメソッドとも呼ばれ、C#的にはこちらで呼ぶのが正式のようです。
当サイトは基本的にメソッドと記述しますが、同じものと捉えて構いません。

13行目ではConsole.WriteLineというメソッドを使用してコンソール画面に文字列を表示しています。
(コンソール画面:真っ黒な背景に文字が表示されるアレ。標準入出力とも言う。Windowsではコマンドプロンプトとも)

Console.WriteLineメソッド

Console.WriteLineメソッドは、コンソール画面に文字列を表示する機能を提供します。


Console.WriteLine("C#プログラミング");

Console.WriteLineは「Console」部分と「WriteLine」部分に分けることができます。

「Console」というのは、コンソール画面に対して指示を出す時に使用するキーワードで、ここにコンソール画面に対する操作の機能がまとめられています。
正確に言えばこれは「メソッド名」には含まれず、次の「WriteLine」がメソッド名です。

「Console.WriteLine」は「Consoleの中に含まれるWriteLine」という意味です。
「Console」にはWriteLineメソッド以外にも様々なメソッドが用意されています。

「Console」の中に存在するメソッドを呼び出すには、「Console」に続いて「.」(ドット)で区切り、目的のメソッド名を書きます。
これは住所と同じようなもので、「東京都の中にある渋谷区」という住所を「東京都.渋谷区」と書く決まりになっていると考えるとわかりやすいかもしれません。

「WriteLine」は文字列を一行書き込むメソッドです。
「WriteLine」メソッドは「Console」というキーワードの中に存在するので、書き込む先(出力する先)はコンソール画面になります。

引数と文字列

Console.WriteLineメソッドは「どんな文字列を表示するか」を指定する必要があります。
その文字列はメソッドのすぐ後ろに丸括弧を書き、その中で指定します。
この丸括弧の中に指定する値を引数といいます。

C#での文字列はダブルクォーテーション(ダブルクォート、二重引用符)で囲う必要があります。
("記号)


Console.WriteLine("C#プログラミング");

ダブルクォーテーションで囲まれた箇所は「これはプログラミングのコードのキーワードではない、ただの文字列ですよ」という意味になります。
例えば画面に「Console.WriteLine」という文字列を表示したい場合、


Console.WriteLine(Console.WriteLine);

と書いてしまうと、プログラミングコードと表示したい文字列とを区別することができません。
なので、


Console.WriteLine("Console.WriteLine");

と書くことで、ダブルクォーテーションで囲われた部分はプログラミングコードではないただの文字列であることを示すことができます。
文字列はダブルクォーテーションで囲うということは必ず覚えてください。

行の終端のセミコロン

最後に、行の最後に;(セミコロン)を書きます。
これは行の終わりを示す記号です。

例えば、


Console.WriteLine("C#プログラミング")
Console.WriteLine("2行目")

と、行の最後のセミコロンを忘れるとエラーになります。
これは、


Console.WriteLine("C#プログラミング")Console.WriteLine("2行目")

と書くのと同じ意味になるからです。

反対に、


Console.WriteLine("C#プログラミング");Console.WriteLine("2行目");

と記述するのはOKです。
(最後の行にもセミコロンが必要です)
セミコロンで一行の終わりと認識されるので、セミコロン以降は別の行であると解釈されるためです。
ただしややこしいので、普通はひとつの処理の終わり毎に改行したほうが良いでしょう。

改行および空白文字

C#のコードは、改行や空白文字を任意の場所に自由に書くことができます。
これによってプログラムの動作が変わることはありません。
(一部の例外はあり)
空白文字とは半角スペース、全角スペース、タブ文字などの「見えない文字」です。


static void Main(string[] args)
{
    Console.WriteLine("一行目");
    Console.WriteLine( "二行目" );
Console . WriteLine ("三行目") ;
    Console
        .WriteLine(
            "四行目"
        );
}
一行目
二行目
三行目
四行目

「一行目」が標準的な書き方です。
「二行目」は引数の前後に空白文字が入っています。
「三行目」は他の行の先頭にあった空白文字を無くし、Consoleやドット、WriteLineなどのキーワード、終端のセミコロンを空白文字で切り離しています。
「四行目」は改行で一行を分割しています。
これらは全て同じ動作になります。

文字列はC#のコードではありませんから、文字列内の空白文字はそのまま反映されます。
だだし文字列内での改行は、そのまま記述することはできません。
文字列内で改行する方法は文字と文字列の項で改めて説明します。


Console.WriteLine("一行目");
Console.WriteLine("二 行 目");
一行目
二 行 目

Console.ReadLineメソッド

14行目はConsole.ReadLineメソッドを使用しています。
これも「Console」キーワードに含まれるメソッドです。


Console.ReadLine();

Console.ReadLineメソッドはConsole.WriteLineメソッドと逆の働きをするメソッドで、標準入出力から文字列を読み取ります。
つまりキーボードから入力した文字列をプログラムに取り込むことができます。

Console.ReadLineメソッドが実行されると、コンソール画面はキーの入力待ち状態になり、プログラムは一時停止します。
コンソール画面上でEnterキーが入力されると入力の終端となり、プログラムは再開し、入力した文字列を受け取ることができます。
ただし今回は入力を受け取る必要がないので取り込んでいません。

今回のサンプルコードは画面に文字列を表示するだけなので、Console.ReadLineメソッドは本来は必要ありません。
しかしこのメソッドがないとプログラムの動作確認ができません。

コンソール画面はプログラムが終了すると勝手に閉じられます。
今回のような短いプログラムの場合、プログラムを実行した次の瞬間にはプログラムが終了するため、文字列を確認する暇もなくコンソール画面が閉じてしまいます。
それでは困るので、コードの最後にConsole.ReadLineメソッドを実行し、「キーボードからの入力待ち」の状態にすることで勝手にコンソール画面が閉じるのを防ぎます。

試しにConsole.ReadLineメソッドの行を削除してプログラムを実行してみてください。
一瞬ウィンドウが表示されますが何が書かれているかを確認する暇はないと思います。

Visual Studioの設定を変更することで、プログラムが終了しても何かキーを押下するまでウィンドウを閉じないようにすることもできます。

引数のないメソッド

Console.ReadLineメソッドはConsole.WriteLineメソッドとは違い、丸括弧の中には何も書かれていません。
Console.ReadLineメソッドは引数を指定せず実行できます。

しかし引数がない場合でも丸括弧を省略して書くことはできません。
メソッド名の直後の丸括弧はそのメソッドを実行するという意味を持ちます。
特殊な場合を除きメソッド名の後には丸括弧は必須なので、省略しないようにしましょう。

Mainメソッド

11行目のstatic void Main(string[] args)Mainメソッドというものを定義しています。
C#では、プログラム開始時にMainメソッドを呼び出すという決まりがあります。
そして、Mainメソッドを抜けるとプログラムが終了するという決まりがあります。

つまり、上記のコードは11行目からプログラムの実行が始まり、15行目で終わる、ということになります。
これらは自動的に行われるので、プログラマが明示的にMainメソッドを実行することはありません。

なお、MainメソッドはMだけ大文字なので注意して下さい。
大文字と小文字は区別されます。

このページのまとめ

  • プログラムは「Mainメソッド」の波括弧内{}から始まる
  • コードは上から順番に実行される
  • 何かしらの機能の呼び出しにはメソッドを使用する
  • メソッドには引数があるものとないものがある
  • 行の終わりにはセミコロンをつける