同じに見えて違うもの
季節の変わり目なのか、暑かったり、寒かったりしますね。
いままで、文字列、整数、小数、真偽値など、いろんなデータを学んできましたね。
本日は、おさらいをかねて、
それらのデータの区分けである、『データ型』を学んでいきましょう。
データ型とは
データ型とは、データのカテゴリーわけです。
メジャーなものは以下の4つです。
いままで習ってきましたね。
順番に、おさらいしてみましょう。
データ型1. 文字列(第5回)
“”で囲まれたものは文字列として解釈されます。
正式名称はSystem.String
略号はstringです。
実例をご覧いただきます。
// 以下は文字列 "CSharp is a programming language." // 以下も文字列 "44" "4.5" // 以下も文字列 "True"
データ型2. 整数(第6回)
“”で囲まれておらず、
正負の記号『+』か『-』と、
数字だけで書かれたデータです。
第6回で学んだように、算数の計算で使います。
実は、C#では、整数の大きさに応じて、複数の型が用意されています。
ここでは、デフォルトの型を覚えましょう。
正式名称はSystem.Int32
略号はintです。
実例を以下に示します。
// 整数型 44
データ型3. 小数(第6回)
“”で囲まれておらず、
正負の記号『+』か『-』と、
数字、
そして小数点『.』で書かれたデータです。
第6回で学んだように、算数の計算で使います。
二種類あります。
ここでは、デフォルトの型をご紹介します。
正式名称はSystem.Double
略号はdoubleです。
実例を以下に示します。
// 小数型 33.5
データ型4. 真偽値(第7回)
“”に囲まれていない、true、またはfalseのことです。
正式名称はSystem.Boolean
略号はboolです。
第7回で扱ったように、『正しいか間違っているか』を表現するのに使います。
実例を以下に示します。
// 正しいをあらわすtrue true // 間違っているをあらわすfalse false
データ型の確認方法
『データ.GetType()』を使います。
意味は『データのデータ型(Type)を取得(Get)する』です。
正式名称が得られます。
実例を下に示します。
// 意味: 44のデータ型を取得する // 結果: System.Int32 44.GetType(); // 意味: 33.2のデータ型を取得する // 結果: System.Double (33.2).GetType(); // 意味: "aaa"のデータ型を取得する // 結果: System.String "aaa".GetType(); // 意味: falseのデータ型を取得する // 結果: System.Boolean false.GetType();
データ型同士の変換
想定されたデータ型に合わない場合エラーが出ます。
エラーの実例をご覧いただきましょう。
// 文字列を整数で割り算は出来ません。 "22" / 22;
エラーを避けるために、データ型を変換してあげる必要があります。
手動変換、自動変換、キャストの三種類があります。
順に見ていただきます。
手動変換
文字列でないものを文字列に変換することは簡単です。
なぜなら、整数も小数も真偽値も、文字を打ち込んでいることには変わりないのですから。
ただの文字の羅列として解釈すればいいだけです。
基本的には、完全に変換可能です。
一方、文字列を文字列でないものに変換する場合、エラーが出ることがあります。
それでは、一つ一つ見ていきましょう。
文字列から整数へ
『Int32.Parse()』を使います。
『()の中の文字列を整数型(Sytem.Int32)に変換(Parse)する』という意味です。
()の中の文字列が、整数として解釈できる形、
つまり、””をはずしたらそのまま整数型になる文字列でないと
エラーが出ます。
実例
// これはエラー // ""をはずしたとき整数にならないから。 Int32.Parse("a"); // これは大丈夫 // ""をはずしたとき整数になるから。 Int32.Parse("22"); // 型変換をして割り算をします。 // 結果は1です。 Int32.Parse("22") / 22;
整数から文字列へ
『整数.ToString()』を使います。
『整数が文字列に変換される』という意味です。
原則、必ず成功します。
実例
// 文字列に変換されます 44.ToString(); // 整数同士の足し算なので、足し合わせた結果は3 1 + 2; // ただの文字列になったので、足し合わせた結果は12 1.ToString() + 2.ToString();
文字列から小数へ
『Double.Parse()』を使います。
『()の中身の文字列を小数型(System.Double)に変換(Parse)します』という意味です。
()の中身は、””をはずすとそのまま小数になる文字列でなければいけません。
実例
// これはエラー Double.Parse("aaa"); // これは成功 Double.Parse("12.45"); // 型変換して余りを求める // 結果は1.8 Double.Parse("6.3") / 4.5;
小数から文字列へ
『小数.ToString()』を使います。
『小数が文字列(System.String)に変換される』という意味です。
原則、必ず成功します。
実例です。
// 44.2が一まとまりであることを示すために()でまとめています。 // 結果は文字列の『44.2』です。 (44.2).ToString(); // 計算に使います。 // 結果は『44.2は文字列です』です。 (44.2).ToString() + "は文字列です。";
真偽値と文字列
『Boolean.Parse()』を使います。
『()の中身の文字列を真偽値(System.Boolean)に変換(Parse)します』という意味です。
()の中身は、”True”か”False”でなければいけません。
それ以外の文字列だとエラーです。
ただし、大文字と小文字は自由に変更して大丈夫です。
実例を見てみましょう。
// これはエラー Boolean.Parse("あああ"); // これは成功 // 真偽値のtrueになる Boolean.Parse("True"); // これも成功 // 真偽値のtrueになる Boolean.Parse("TRUE");
真偽値を文字列に
『真偽値.ToString()』を使います。
『真偽値が文字列に変換される』という意味です。
原則、必ず成功します。
実例を見てみましょう。
// 文字列の"True"に変換されます。 true.ToString(); // 文字列の足し算に使います。 // 結果はTrue is String.です。 true.toString() + " is String.");
自動変換
手動で変換するのが基本ですが、自動的に変換してくれる場合もあります。
ここでは3つ紹介します。
1. 整数と小数を足し算したとき
自動変換で整数は小数として解釈されます。
実例
// 結果は7.5 4 + 3.5;
2. 文字列と整数や小数を足し算したとき
自動変換で整数や小数が文字列として解釈されます。
実例
// 結果はaaa3 "aaa" + 3;
3. 画面上に表示するとき
Console.WriteLine内では、真偽値も整数、小数も文字列に自動変換されます(第6回、第7回)。
実例
// 自動的に文字列として画面に表示されます // 33 Console.WriteLine(33); // True Console.WriteLine(true);
キャスト
手動変換の一種で、キャストという特別な型変換があります。
通常の手動変換と違うのは、使われ方です。
『広い意味で言えば同じ類のデータ型が2つある。情報量の多いデータ型を、情報量の少ないデータ型に変換したい。』
という場合に使う型変換です。
上で述べましたが整数と小数を足し算したときには、整数が自動的に小数に型変換されます。
小数型と整数型は、広い意味で言えば同じ類のデータ型です。
小数型は、整数型より情報量が多いです。(小数点以下の桁の情報がある。)
この場合整数型に、小数点以下の桁の情報(すべて0)を付け加えることで、自動変換できます。
では、その逆はどうなるのか。
このとき、自動変換は出来ません。
小数点以下を切り捨てるため、キャストを使います。
実際に、小数を切り捨てて整数にするコードを見てもらいましょう。
using System; namespace DataTypeTutorial { class MainClass { static void Main(string[] args) { // (int)30.5で、30.5を切り捨てて30にします。 // データ型は整数型(System.Int32) Console.WriteLine("30.5が整数型にキャストされたときのデータ型"); Console.WriteLine(((int)30.5).GetType()); // 表示されるのは30 Console.WriteLine("30.5が整数型にキャストされたときの値"); Console.WriteLine((int)30.5); } } }
実習
以下の問題を解いてください。
問題1. データ型確認
以下の5つのデータのデータ型を画面で表示してください。
1. 44
2. “123”
3. 3.5
4. “true”
5. false
問題2. データ型変換
以下の型変換を行うコードを書いてください。
(必要な部分だけでかまいません。)
1番. 真偽値のtrueを文字列に変換。
2番. 整数の33を文字列に変換
3番. 小数の33.5を整数の33に変換
問題3. データ型変換を使ったプログラム
以下の日本語の内容を、C#で表現してください。
1. 整数の44を文字列に変換してください。
2. 整数の22を文字列に変換してください。
3. 1と2で文字列に変換した44と22を足し合わせてください。
4. 3で足し合わせた文字列を画面に表示してください。
まとめ
文字列、整数、小数、真偽値さえ覚えておけば、
基本的なデータ型としては十分です。
次回は、データに名前をつけて整理する方法、
変数定義を学びましょう。
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発