変数

変数とは

プログラミングでは変数という機能を頻繁に使用します。
変数とは、文字列や数値などの値を一時的に保存しておく入れ物です。


static void Main(string[] args)
{
    int number;
    number = 10;

    Console.WriteLine(number);
    Console.ReadLine();
}
10

「Main」の波括弧内以外の行は毎回共通なので、今回からは省略して記述します。
実際のコードからは「using ~」などの行は削除せずにそのままにしておいてください。

上のコードでは3行目で「number」という名前の変数を用意しています。
そして4行目で「変数number」に対して「10」という値を保存しています。

intというのはデータ型の一種で、これは整数値を表します。
「int abc;」とすると「整数が保存できる、abcという名前の変数」を今から使用します、という意味になります。
これを変数の宣言といいます。

変数名は基本的に自由につけることができます。
半角英数文字とアンダースコア(_)が使用できますが、数字から始まる名前は付けることができません。
また、例えば「int」や「new」などの、C#が使用しているいくつかのキーワードも変数名には使用できません。
「int1」「_new」などの名前は可能です。

ちなみにConsole.WriteLineメソッドは引数に変数を指定すると中身の値を表示することができます。

データ型

変数に保存できる「値」にはいくつかの種類が存在します。
これをデータ型といいます。
以下はC#のデータ型でよく使用されるものの一部です。

byte
整数型。小さな値を扱う。
short
整数型。byte型より大きくint型より小さな値を扱う。
int
整数型。最も頻繁に使用される。
long
整数型。int型よりも大きい値を扱える。
float
小数点型。小数点を含む値を扱う場合に使用。
double
小数点型。float型よりも大きな値(精度の高い小数)を扱える。
bool
論理型。「true」か「false」かのどちらかの値のみ扱う。
char
文字型。文字(一文字)を扱う。
string
文字列型。文字列を扱う。

種類が多いですが、とりあえず重要なのはint型double型bool型string型あたりです。

小数を含む値を使用するには、小数点型(float型、double型)のデータ型を使用する必要があります。
例えばint型(整数型)で宣言した変数に小数点の値を保存すると、エラーにはなりませんがデータが変化してしまいます。
これを理解した上であえてデータを変化させるのならば構いませんが、単純ミスでデータを変化させてしまうとバグの原因になってしまうので注意が必要です。

詳しくはデータ型の項で改めて解説します。

変数の使い方

実際に変数を使用するには、まず扱いたい値に対応するデータ型の変数を宣言します。
例えば小数点を扱いたい場合はdouble型かfloat型を使用します。


double real;

次に、宣言した変数に対して値を保存します。
これは「=」記号で行います。


double real;
real = 1.23;

宣言した変数を「=」記号の左側に書き、右側に保存したい値を書きます。
これで「変数real」には「1.23」という値が保存された状態になります。
これを値の代入といいます。

変数に値を代入すると、後から自由にその値を取り出すことができます。


double real;
real = 1.23;
Console.WriteLine(real);

上記コードはコンソール画面に「1.23」が表示されます。

変数から値を取り出す、と言っても保存した値が消えてなくなるわけではありません。
正確に言えば値のコピー、参照です。

変数は入れ物ですから、再度別の値を入れることもできます。


double real;
real = 1.23;
Console.WriteLine(real);
real = 4.56;
Console.WriteLine(real);
1.23
4.56

すでに値が入っている変数に再度値を代入すると、値が上書きされます。

float型が使えない?

小数値はdouble型かfloat型を使用する、ということなのでfloat型を使用してみます。


double d;
d = 1.23;

float f;
f = 1.23;

しかしこれは5行目でエラーとなってしまいます。

C#では「コード上に小数値を記述するとそれはdouble型として扱われる」というルールがあるためです。
double型とfloat型ではfloat型のほうがサイズが小さいのでエラーになるのです。

今はとりあえず小数型はfloat型ではなくdouble型を使用しましょう。
この問題の解決法はリテラル組み込み型の型変換で改めて解説します。

変数の初期化

変数は何か値を入れてからでないと使用(中身を取り出すこと)できません。
例えば、


double real;
Console.WriteLine(real);

とすると、2行目でエラーになります。
何も値が入っていない変数realから値を取り出そうとしても不可能だからです。

変数に最初に値を代入することを変数の初期化といいます。
変数を使用する前には初期化が必要です。

変数は宣言と同時に初期化をすることもできます。


double real = 1.23;
Console.WriteLine(real);

こうすることで、変数realには「1.23」が入った状態となります。

厳密にいえばこれが正式な初期化で、変数の宣言とは別の行で値を入れるのはただの代入です。
変数の初期化と代入は今は大した違いはありませんが、初期化時ならばOKだが代入時はNG、といった書き方も存在します。

複数の変数を同時に宣言

同じデータ型の変数を複数使いたい場合は以下のようにコンマで区切って一行で宣言することができます。


int num1, num2, num3;
num1 = 10;
num2 = 20;
num3 = 30;

宣言と同時に初期化する場合は以下のようにします。


int num1 = 10, num2 = 20, num3;

このコードでは変数num1とnum2には値が入っていますが、num3は空っぽとなります。