ホーム - プログラミング - 変数とは

変数とは

変数とはプログラムの中で値をしまっておくための箱というイメージをしてください。C#というプログラミング言語においては、変数という箱にはどんな名前を付けておくのか、また、どんな種類の値をしまっておくのかということを事前に決めておく必要があります。これを変数定義といいます。
変数定義はでは変数名と型(後述、値の種類のことです)を記述します。C#では変数定義は対象となる変数を使う前ならどこでも定義できますが、可読性という観点から、ある程度意味のある変数はスコープ(後述)の先頭でまとめて定義しておくことが多いです。逆に短期的で一時的な変数は利用したいところでその都度宣言します。(変数に無駄なスコープを与えないためにも有効です。)

下記に変数定義と変数の使い方のごく簡単な例(2行のプログラム)を示します。

 int x = 5;  // --- (1)
 x = x + 1;  // --- (2)
				
C#ではステートメント(プログラム1行のことです)の最後に「;(セミコロン)」を入力する決まりになっています。また「//(スラッシュスラッシュ)」はそれ以降がコメント(説明書き)であることを意味します。

(1)の行では整数型(int型)の変数xを宣言し、5を代入しています。まず「=(イコール)」というのは「代入」という意味になります。プログラミングのルールとして、「=」の左側の変数に右側の値を代入するということになっています。 また、変数を宣言した時に特定の値を代入することを「初期化」といいます。初期化はプログラムの誤動作(「バグ」といいます)を防ぐために重要な役割を果たしますので、変数を宣言したら初期化する習慣を身に着けておきましょう。

(2)の行では変数xに現時点でのxの値に1を加えたもの(すなわち6です)を代入しなおしています。プログラミングの記述は一見数学にも似ていますが、(2)のような行を方程式のように見てしまうと「0 = 1」という意味の分からない解になってしまいます。C#においては「=」は「代入」という演算であり、等しいという意味ではありません。(等しいは「==(イコールイコール)」と記述します。)

プログラムでは数値だけでなく、文字列などの足し算もできます。次に文字列の足し算のごく簡単な例(プログラム3行)を見てみましょう。
 string x = "abc";  // --- (1)
 string y = "defg";  // --- (2)
 x = x + y;  // --- (3)
				
(1)と(2)の行では文字列型(string型)の変数xとyを宣言し、それぞれを「abc」と「defg」という文字列の値で初期化しています。そして(3)の行でxにxとyを足した文字列(すなわち「abcdefg」です)が代入しなおされています。

また、これまでの例で出てきたx = 5の「5」やx = "abc"の「"abc"」のことをリテラルといいます。リテラルとはソースコード内で直接記述されている「定数値」のことで、数値リテラル(5など)や文字リテラル(”abc”などダブルクォーテーションで囲まれた文字列)などがあります。プログラミングにおいては、「0」や「1」、「""」(空文字といいます)、誰が見ても分かりきった普遍的な値(例えば円周率)を除き、変数に直接リテラルを代入するような記述は記述上あまり好ましくありません。(マジックナンバーと呼ばれています)マジックナンバーは値そのもので意味を表さないため、ソースコードの可読性が下がる(読みにくくなる)ためです。
可読性を上げるためには、なるべくマジックナンバーは使わず、下記のように意味の分かる名前で定数宣言したものを利用するようにしましょう。
const int SAMPLE_INIT_VALUE = 5;

int x = SAMPLE_INIT_VALUE;
x = x + 1;