005. 変数を使ってみよう

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

プログラムを作っていく上で、一時的にデータを記録したい場合、変数というものを使うと楽にできます。

変数とは

img_0046
変数とは、パソコンの主記憶装置(RAMメモリ)に記録されるデータのことです。プログラムが終了すると消滅するため、ずっと記録し続けるということはできません。あくまで一時的に、です。
変数は使う前に必ず宣言する必要があります。宣言の仕方はこのような感じでします。

[型名] [変数名];
Dim [変数名] As [型名]

例えば、文字列型(string)で、strという変数を宣言する場合はこのような感じになります。

string str;
Dim str As String

そして、宣言と同時にデータを入れることもできます。

string str = "Hello World!";
Dim str As String = "Hello World!"

 変数の型について

変数の型はさまざまあります。

重要なもの

一番重要なものだけ抜粋するとこのようなものがあります。

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Int32 int 整数 固定 -2147483648~2147483647 値型
Single float 小数(浮動小数点数) 固定 -3.40282347E+38~3.40282347E+38 値型
String string 文字列 可変 いくらでも 値型
Boolean bool 理論値 固定 true/falseのみ 値型

まずは最低限、この4つを覚えましょう。

整数型

整数型だけでもたくさんあります。一番使われるものはintとlong

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Byte byte 整数型 1バイト 0~255 値型
Int16 short 符号付整数型 2バイト -32768~32767 値型
Int32 int 符号付整数型 4バイト -2147483648~2147483647 値型
Int64 long 符号付整数型 8バイト -9223372036854775808~9223372036854775807 値型
UInt16 ushort 整数型 2バイト 0~65535 値型
UInt32 uint 整数型 4バイト 0~4294967295 値型
UInt64 ulong 整数型 8バイト 0~18446744073709551615 値型

小数(浮動小数点数)

浮動小数点数でよく使われるものはfloatですが、最近のCPUはdoubleに合わせて作っているものも出てきているため、floatでサイズが小さいほうが高速だとは限りません。
まあそのときに応じて使い分けるのがベストでしょう。いっそdoubleで統一するのもありかもしれませんね。

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Signle float 浮動小数点数 4バイト -3.40282347E+38~3.40282347E+38 値型
Double double 浮動小数点数 8バイト ~-1.7976931348623157E+308~1.7976931348623157E+308 値型

数値型

整数型・浮動小数点数型のほかに、数値型といわれる型もあります。こちらはあまり使い道はないですが、オーバーフローしづらいのが特徴です。

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Decimal decimal 数値型 16バイト -79228162514264337593543950335~79228162514264337593543950335 値型

数値型はこの1つだけです。このdecimalは整数だけではなく、小数も扱うことができます。
ただ数値にしてもサイズがやけにでかいので、あまり使われることはありません。

文字関係

まず、コンピューターの世界での文字と文字列は別物です。文字がたくさん並んだものが文字列です。この二つは間違えないようにしましょう。

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Char char 文字 2バイト 値型
String string 文字列 可変 値型と参照型のハイブリッド

論理型

コンピュータhあ0と1の世界だ!なんてよく聞きます。プログラミングをしていく中でも、0と1、つまりtrueかfalseを使っていきます。

正式名 短縮形 形式 サイズ 扱える範囲 タイプ
Boolean bool 理論値 1バイト trueかfalse 値型

クラスや構造体

stringやintのように、あらかじめ作られた型のほかに、自分でクラスを作り、変数として初期化することもできます。
例えば

public class A {
    public int Value = 0;
}

というクラスを作ります。このクラスのインスタンスを保存する変数は

A var1 = new A();

みたいに作ることができます。

正式名 短縮系 形式 サイズ 扱える範囲 タイプ
構造体 struct 構造体 ものによる 値型
クラス class クラス ものによる 参照型

ちなみに…

ここで紹介した型(Aクラスを除く)はすべて値型です。Aクラスはクラスなので参照型。
値型と参照型については参考をご参照ください。

nullについて

データが存在しない場合、nullというものが使われます。
intやfloat、boolなど値型と呼ばれる型はnullを使うことができませんが、stringのような参照型の特徴を持ったオブジェクトに対してはnullというものがあります。
nullは別に何かしらの型のオブジェクトというものではなく、オブジェクトが存在しないという意味があります。
例を見てみましょう。

public class A {
    public int Value = 0;
}
 public void Main() {
    A data = null;
    // data => null
    // data.Valueは、そもそもdataにデータが含まれていない(nullである)ので呼び出せない
    // NullReferenceExceptionが投げられる
}

new A();とすることでいつもは変数にデータを入れてきましたが、その場でnewしたくない場合、ただ宣言だけしておきたい場合はnullを入れておくといいでしょう。

参考

クラスと構造体の違い(参照型と値型の違い)
http://yryr.me/programming/csharp/beginner/object-model/dotnet-refarence-value-type-variable.html