基本的な文法
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#プログラミング
実際にプログラムの動作を決定しているのは13、14行目です。
C#でのプログラミングは、基本的に「static void Main」と書かれている行に続く波括弧{}の中に動作を記述していきます。
それ以外の行は今は無視してください。
他の行についてはおいおい説明します。
また、Main{}以外の行はとりあえず書き換えることはないので、これ以降のサンプルコードでは省略して記述します。
(削除したりしないでください)
13、14行目は関数という機能を使用しています。
関数(メソッド)
関数とは、特定の処理をひとまとめにしたものです。
C#にはあらかじめたくさんの関数が用意されていて、様々な機能が提供されています。
関数はメソッドとも呼ばれ、C#的にはこちらで呼ぶのが正式のようです。
当サイトは基本的にメソッドと記述しますが、同じものと捉えて構いません。
13行目ではConsole.WriteLineというメソッドを使用してコンソール画面に文字列を表示しています。
(コンソール画面:真っ黒な背景に文字が表示されるアレ。標準入出力とも言う。Windowsではコマンドプロンプトとも)
Console.WriteLineメソッド
Console.WriteLineメソッドは、コンソール画面に文字列を表示する機能を提供します。
Console.WriteLine("C#プログラミング");
「Console.WriteLine」は「Console」部分と「WriteLine」部分に分けることができます。
「Console」というのは、コンソール画面に対して指示を出す時に使用するキーワードです。
「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です。
セミコロンで一行の終わりと認識されるので、セミコロン以降は別の行であると解釈されるためです。
ただしややこしいので、普通はひとつの処理の終わり毎に改行したほうが良いでしょう。
Console.ReadLineメソッド
14行目はConsole.ReadLineメソッドを使用しています。
これも「Console」キーワードに含まれるメソッドです。
Console.ReadLine();
Console.ReadLineメソッドはConsole.WriteLineメソッドと逆の働きをするメソッドで、標準入出力から文字列を読み取ります。
つまりキーボードから入力した文字列をプログラムに取り込むことができます。
ただし今回はその必要がないので取り込んでいません。
今回のサンプルコードは画面に文字列を表示するだけなので、Console.ReadLineメソッドは本来は必要ありません。
しかしこのメソッドがないとプログラムの動作確認ができません。
コンソール画面はプログラムが終了すると勝手に閉じられます。
今回のような短いプログラムの場合、プログラムを実行した次の瞬間にはプログラムが終了するため、文字列を確認する暇もなくコンソール画面が閉じてしまいます。
それでは困るので、コードの最後にConsole.ReadLineメソッドを実行することで「キーボードからの入力待ち」の状態にしておきます。
Console.ReadLineメソッドは読み取れる文字列が入力されるまで待機状態となりプログラムが停止するため、これを利用して勝手にコンソール画面が閉じるのを防ぎます。
試しにConsole.ReadLineメソッドの行を削除してプログラムを実行してみてください。
一瞬ウィンドウが表示されますが何が書かれているかを確認する暇はないと思います。
ちなみにConsole.ReadLineメソッドは「改行」を一行の区切りとみなすので、Enterキーの入力があるまで待機状態になります。
引数のないメソッド
Console.ReadLineメソッドはWriteLineメソッドとは違い、丸括弧の中には何も書かれていません。
Console.ReadLineメソッドは引数を指定せず実行できます。
だからといって丸括弧を省略して書くことはできません。
メソッド名の直後の丸括弧はそのメソッドを実行するという意味を持ちます。
特殊な場合を除きメソッド名の後には丸括弧は必須なので、省略しないようにしましょう。
Mainメソッド
11行目の「static void Main(string[] args)」はMainメソッドというものを定義しています。
C#では、プログラム開始時にMainメソッドを呼び出すという決まりがあります。
そして、Mainメソッドを抜けるとプログラムが終了するという決まりがあります。
つまり、上記のコードは11行目からプログラムの実行が始まり、15行目で終わる、ということになります。