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

解答例

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

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

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

解答例

まとめ

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

  • このエントリーをはてなブックマークに追加

PAGE TOP