ホーム - プログラミング - 変数の型

変数の型

変数はプログラムにおいて値を格納しておく器ということについては、「変数とは」のページで説明しました。そしてプログラミングにおいては変数にどんな種類の値が格納されているのかを意識しておく必要があります。この値の種類のことを「型」と呼びます

なぜプログラミングにおいて「型」を意識しておかなければならないかについて少し触れておきます。例えば「1」という値と「2」という値があるとしましょう。そしてこれらの値を足し算するとどうなるでしょう。
多くの方は「1+2=3」で3とお答えになると思います。それはこの「1」という値と「2」という値が数値であると認識しているからです。ところがこの「1」や「2」が文字列(文字の並び)であるとするとどうなるでしょう。「"1"+"2"="12"」となります。
まだあります。「2」と「10」はどちらの方が大きいでしょうか。もちろん「10」とお答えになるでしょう。前述と同様で「2」も「10」も数値に見えるからです。ところがこれらの値が文字列だとどうなるでしょうか。文字列の大小比較は一文字目から順番に見ていきます。「"2"」は一文字目が「"2"」、「"10"」は一文字目が「"1"」なので、「"2"」の方が「"10"」よりも大きいということになります。

コンピュータは人間とは違って、その値が文字列なのか数値なのか適切に判断することができません。ですのでプログラミングの際は変数宣言の時に型も合わせて指定し、どんな値を扱う変数なのかを明示的に示します。型には数値を扱う型や文字列や日付の型の他にも、どんな値も取り扱える型などもあります。各々の方の細かい説明はC#.NETのヘルプに譲りますが、ここでは基本的な型について少し示します。

int / long
整数を扱う型です。通常はintを使い、大きな数値を扱うときはlongを使用します。
float / double
小数を扱う型です。浮動小数点で値を扱います。精度の高い小数値を扱うときはdoubleを使用します。
decimal
通貨を扱う型です。固定小数点で小数を扱う場合もdecimalを使用します。
bool
真(true)と偽(false)の二値を扱う型です。
string
文字列を扱う型です。
DateTime
日付、時間を扱う型です。
object
オブジェクト(後述)を扱うための型です。どんな値でも扱えます。


object型の変数はどんな値でも格納できるため、一見便利そうに見えますが実はそうではありません。object型の変数について演算するときは適切な型に変換(キャストといいます)する必要がありますし、ソースコード自体もどんな値が入っているかを常に意識して見ていかなければならず、乱用すると可読性が著しく下がりますので、使用の際はご注意ください。

object型の変数には「何の値も入っていない」という意味の値を代入することが出来ます。この「何も入っていない」という値を「null(ヌル)」といいます。特にオブジェクト指向でのプログラミングにおいてはとても重要な値です。

ある型の変数を別の型に変換することをキャストといいます。値をそのままの形で別の型に変換します。型の変換はうまくいく場合と失敗する場合があります。例えば文字列"123"は123という数値に変換できますが、"abc"という文字列は数値には変換できません。型の変換には似た言葉にコンバートというものがありますが、こちらは値を別の型に変換する際に適切な形に整えて変換するようなニュアンスです。下記に型変換の例を示します。
object data = 123;	// --- 整数値123をobject型の変数に格納
int intData1 = (int)data;	// --- int型にキャスト
int intData2 = Convert.ToInt32(data);	// --- int型にコンバート
long longData = (long)intData1;	// --- int型をlong型にキャスト
string strData = data.ToString();	// --- string型にコンバート
string strData2 = Convert.ToString(data);	// --- string型にコンバート