この章のテーマ §
変数の基礎を学びます。変数を利用するとデータを保管しておき、あとで利用することができます。
前提知識 §
Console.Writeメソッド, 文字列の基礎, 型の基礎、int型, for文
解説 §
変数はデータの入れ物です。
しかし、長期保存には使えません。
長期保存にはファイルなどの他の機能を使用します。
変数はメソッドの中で定義されて使用されます。基本的にメソッドの中でだけ使用できますが、持ち出す方法がないわけではありません。
変数には常に型が付いています。型にそぐわない値は格納できません。たとえば、最大32767まで表現可能なshort型の変数に、最大255まで表現可能なbyte型の値を入れることはできますが、逆はできません。代入はできても、情報の一部が失われる可能性があります。
変数を使う目的は、用意したタイミングと使用するタイミングがずれているときに一時的にデータを保管しておく用途や、繰り返し使う値を再計算で時間を無駄にしないための保管しておく用途や、繰り返し加算などを行ってループの回数を数えるなどの用途があります。
しかし、任意の型の任意のデータを格納するのが変数なので、使い方は使う者の想像力次第です。
ただし、パッと見て分かりにくい使い方はお勧めできません。たとえば、犬の数を格納する変数名を"numberOfCats"にするのはお勧めしません。他の人が変数の用途を誤解すればそれはバグの温床です。
変数を宣言するには、"型名 変数名"と書きます。その後に初期化式を続けても可です。初期化式はイコール記号に続いて式を書きます。これは代入文に似ていますが、厳密には代入文ではありません。
型が推定できるときは、型名をvarを書くことが可能です。たとえば、var s="Hello";と書いてあれば、"Hello"は文字列型の定数なので変数sの型は文字列型だとC#コンパイラが推論してくれます。
つまり、int a=1;と、var a=1;は同じ機能を持ち、どちらも整数型の変数を宣言し、初期値は1です。
罠の数々 §
- 変数の用途は厳密にはスコープというもので規定される。スコープが違えば同じ名前の変数を宣言しても許されるが双方を同時に使うことはできない。スコープについては別途説明する。
- データの入れ物は、変数の他に、引数やフィールドなども存在する。利用可能な範囲やデータの寿命などに違いがあるので、上手く使い分けよう
- varは初期化式から型が決まる場合にしか使えない。初期化式があっても型が決まらないと使えない。
- varは型を推定する仕組みであって、型の無い変数を宣言する手段ではないことに注意しよう
- どんな型の値でも格納できる変数を宣言するにはobject型またはdyamic型を使用するが、扱いが難しいので初心者のうちの利用はお勧めしない
参考リンク §
ステートメント (C# プログラミング ガイド)の中の宣言ステートメント
サンプルソース: varBasic §
// 変数を保管用の入れ物として使う
int a = 1;
int b = 2;
// 何か長い処理があるとする。
int c = a + b;
Console.WriteLine($"{a}+{b}={c}");
// 変数を書き換えながら使う
for (int i = 0; i < 10; i++) Console.Write(i);
Console.WriteLine();
実行結果 §
1+2=3
0123456789
リポジトリ §
https://github.com/autumn009/CSharpPrimer2
練習問題 §
"int a =1;"とintキーワードで宣言された変数aと、"var b=1;"とvarキーワードで宣言された変数bがある。
この時、a+bの計算は可能だろうか。
[[解答]]