変数は「名前付きの引き出し」

広告

変数とは、データを一時的にしまっておく引き出しです。

引き出しには名前、つまりラベルを貼ることができます。
その名前を使って、後から中身を取り出したり、別の中身に入れ替えたりできます。

例えば、次のコードを見てみましょう。

int age = 25;

これは、次のように考えると分かりやすいです。

  • int → 引き出しの種類、整数専用の引き出し
  • age → 引き出しに貼るラベル、名前
  • 25 → 引き出しにしまう中身

つまり、

int age = 25;

は、

age という名前の、整数専用の引き出しを用意して、そこに 25 をしまう

という意味になります。

なぜ「型」が必要なのか

C#では、変数を作るときに「型」を指定します。

int age = 25;
string name = "佐藤";

ここでいう型とは、引き出しの種類のことです。

例えば、現実の引き出しでも、

  • 靴下を入れる引き出し
  • 書類を入れる引き出し
  • 工具を入れる引き出し

のように、用途ごとに分かれていることがあります。

靴下専用の引き出しに、いきなり本を入れたら変ですよね。
書類専用の引き出しに、食べ物を入れるのも不自然です。

プログラムでも同じです。

整数専用の引き出しには整数を入れます。
文字列専用の引き出しには文字列を入れます。

そのルールがあることで、プログラムが想定外のデータを扱ってしまうのを防げます。

例えば、次のコードはエラーになります。

int number = "こんにちは"; // エラー

int は整数専用の引き出しです。
そこに "こんにちは" という文字列を入れようとしているため、C#はエラーにしてくれます。

これは面倒なルールに見えるかもしれません。
しかし、間違った種類のデータを早い段階で見つけてくれる、ありがたい仕組みでもあります。

よく使う型を「引き出しの中身」で整理する

C#でよく使う型を、引き出しのイメージで整理すると次のようになります。

中身のイメージ
int整数、小数点なしの数専用の引き出し10-52026
double小数を含む数専用の引き出し3.1498.6
decimalお金など、誤差を避けたい数値用の引き出し1200.5m0.80m
string文章や文字列専用の引き出し"こんにちは"
char1文字だけ入る小さな引き出し'A'
booltrue か false の2択しか入らない引き出しtruefalse

例えば、年齢や人数のように小数点が出ないものは int が向いています。

int age = 25;
int count = 10;

一方、平均点や身長のように小数が出る可能性があるものは double を使うことがあります。

double average = 82.5;
double height = 171.3;

ただし、お金の計算では注意が必要です。
実務で金額を正確に扱いたい場合は、double ではなく decimal を使うことが多いです。

decimal price = 1200.5m;

「=」は「等しい」ではなく「しまう」

初学者がつまずきやすいポイントの一つが、= の意味です。

数学では、= は「等しい」という意味で使います。

しかし、C#などのプログラムでは、= は多くの場合、右側の値を左側の変数にしまうという意味です。

int age = 25;

これは、

age と 25 が等しい

というよりも、

25 を age という引き出しにしまう

と考えた方が分かりやすいです。

さらに、次のように中身を入れ替えることもできます。

int age = 25;
age = 26;

この場合、最初は age の中に 25 が入っています。
その後、age = 26; によって、引き出しの中身が 26 に入れ替わります。

つまり、変数は「一度入れたら終わり」ではありません。
必要に応じて、中身を更新できます。

中身は変えられるが、引き出しの種類は変えられない

変数の中身は、後から入れ替えることができます。

int score = 70;
score = 90;

これは問題ありません。

score は整数専用の引き出しで、最初は 70 が入っています。
その後、90 に入れ替えています。

しかし、整数専用の引き出しに、文字列を入れることはできません。

int score = 70;
score = "合格"; // エラー

score は int として作られた変数です。
つまり、整数専用の引き出しです。

そのため、あとから "合格" のような文字列を入れることはできません。

ここで大事なのは、次の考え方です。

変数の中身は入れ替えられる。
しかし、その変数が何用の引き出しかは、最初に決めた型のまま。

C#はこのように、型をしっかり決めて使う言語です。
このような仕組みを、静的型付けといいます。

var は「なんでも入る引き出し」ではない

C#には、次のように var を使った書き方もあります。

var score = 80;

これを見ると、

型を書いていないから、なんでも入れられるのかな?

と思うかもしれません。

しかし、そうではありません。

var は、最初に入れた中身を見て、コンパイラが型を自動で判断してくれる書き方です。

例えば、次のコードでは、80 は整数なので、C#は score を int だと判断します。

var score = 80; // int と判断される
score = 90;     // OK
score = "合格"; // エラー

var を使っていても、型がなくなるわけではありません。
最初の値を見て、C#が自動で型を決めてくれているだけです。

つまり、var は「なんでも入る引き出し」ではありません。

var は、引き出しの種類をC#が自動で決めてくれる書き方

と考えると分かりやすいです。

まとめ

変数は、データを一時的にしまっておく名前付きの引き出しです。

int age = 25;

このコードは、

age という名前の整数専用の引き出しを用意して、そこに 25 をしまう

という意味です。

C#では、変数を作るときに型を指定します。
型とは、引き出しの種類です。

整数を入れるなら int、小数を扱うなら double、文字列を入れるなら string のように、入れるデータに合わせて引き出しを選びます。

また、= は数学の「等しい」ではなく、プログラムでは「右側の値を左側の変数にしまう」という意味で使います。

そして、変数の中身は後から入れ替えられますが、変数の型は変えられません。

int score = 70;
score = 90;     // OK
score = "合格"; // エラー

さらに、var を使うと型を書かずに変数を作れますが、型がなくなるわけではありません。
最初に入れた値を見て、C#が自動で型を判断しているだけです。

変数を理解するときは、まずは難しく考えすぎず、

変数は、名前付きの引き出し
型は、引き出しの種類
= は、右側の値を左側の引き出しにしまう

この3つを押さえると、かなり理解しやすくなります。

訪問数 14 回, 今日の訪問数 14回

広告