Tips

2018.05.28

C# 基礎 第9回 データ型

同じに見えて違うもの

季節の変わり目なのか、暑かったり、寒かったりしますね。
いままで、文字列、整数、小数、真偽値など、いろんなデータを学んできましたね。
本日は、おさらいをかねて、
それらのデータの区分けである、『データ型』を学んでいきましょう。

データ型とは

データ型とは、データのカテゴリーわけです。
メジャーなものは以下の4つです。
いままで習ってきましたね。

  1. データ型1. 文字列第5回
  2. データ型2. 整数第6回
  3. データ型3. 小数第6回
  4. データ型4. 真偽値第7回

順番に、おさらいしてみましょう。

データ型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

解答例
コード

using System;

namespace DataTypeExercise
{
    class MainClass
    {
        static void Main(string args)
        {
            // 44のデータ型を判定して表示
            System.Console.WriteLine("44のデータ型");
            System.Console.WriteLine(
                44.GetType()
            );

            // "123"のデータ型を判定して表示
            System.Console.WriteLine("\"123\"のデータ型");
            System.Console.WriteLine(
                "123".GetType()
            );

            // 3.5のデータ型を判定して表示
            System.Console.WriteLine("3.5のデータ型");
            System.Console.WriteLine(
                (3.5).GetType()
            );

            // "true"のデータ型を判定して表示
            System.Console.WriteLine("\"true\"のデータ型");
            System.Console.WriteLine(
                "true".GetType()
            );

            // falseのデータ型を判定して表示
            System.Console.WriteLine("falseのデータ型");
            System.Console.WriteLine(
                false.GetType()
            );
        }
    }
}

実行結果

問題2. データ型変換
以下の型変換を行うコードを書いてください。
(必要な部分だけでかまいません。)

1番. 真偽値のtrueを文字列に変換。
2番. 整数の33を文字列に変換
3番. 小数の33.5を整数の33に変換
解答例
コード

// 1番: 文字列の『True』になります。
true.ToString();

// 2番: 文字列の『33』になります。
33.ToString();

// 3番: 整数の『33』になります。
(int)33.5;

問題3. データ型変換を使ったプログラム
以下の日本語の内容を、C#で表現してください。
1. 整数の44を文字列に変換してください。
2. 整数の22を文字列に変換してください。
3. 1と2で文字列に変換した44と22を足し合わせてください。
4. 3で足し合わせた文字列を画面に表示してください。

解答例
コード

using System;

namespace DataTypeConversion
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                // 44と22を文字列に変換
                // 足し合わせた結果は4422
                44.ToString() + 22.ToString()
            );
        }
    }
}

実行結果

まとめ

文字列、整数、小数、真偽値さえ覚えておけば、
基本的なデータ型としては十分です。
次回は、データに名前をつけて整理する方法、
変数定義を学びましょう。

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search