tanaka's Programming Memo

プログラミングについてのメモ。

504 変数型の変換(型キャスト)

ここでマスターしたいこと

  • int、float、stringの間で、相互にデータのやりとりができるようにすること。

型違い

C#では、以下のような型の変数へ、ある型のデータを直接代入することはできない。

  • int型 ← string型
  • int型 ← float型
  • float型 ← string型
  • string型 ← int型
  • string型 ← float型

これは、データが変数で記録できなかったり、精度が落ちることでプログラムが正しく動作しなくなることを防ぐためである。なお、float型の変数へint型のデータを代入する場合は、float型が全てのint型のデータを記録することができるため、直接代入することが可能である。

エラー例

f:id:am1tanaka:20141106223832g:plain

  • string型のtextBox1.Textを、int型の変数aへの代入しようとして失敗している。

型キャストとは

データの型を変換することを型キャストという。型キャストを行うことで、違うデータ型の変数への代入が可能となる。以下に、相互のデータの型キャスト方法をまとめる。

予め、以下のように変数が宣言されているとする。

int a = 0;
float f = 3.14f;
string str = "10";
変換内容 型キャストの例
int型へstring型を変換 a = int.Parse(str);
int型へfloat型を変換 a = (int)f;
float型へint型を変換 f = a;
float型へstring型を変換 f = float.Parse(str);
string型へint型を変換 str = a.ToString(); あるいは str = ""+a;
string型へfloat型を変換 str = f.ToString(); あるいは str = ""+f;

string型への変換は、""+a;などのように、string型のデータに数値型のデータを結合することでも可能。

例:入力された半径の円の円周を求めるプログラム

型キャストができるようになると、数値型のデータをラベルに表示したり、テキストボックスに入力された数値を計算に使ったりすることができるようになる。以下に例を示す。

        private void button1_Click(object sender, EventArgs e)
        {
            float f = float.Parse(textBox1.Text);
            float ensyu = f * 3.14f * 2.0f;
            MessageBox.Show("半径" + f.ToString() + "の円の円周は" + ensyu.ToString());
        }

動作例

f:id:am1tanaka:20141106230524g:plain

まとめ

  • データは、型違いの変数へは直接代入できない。
  • 型違いの変数へデータを代入する場合は、型キャストを行う。
  • 型キャストを行うことで、ユーザーが入力した文字列データを計算に使ったり、計算結果を表示することができるようになる。


前へ | 目次 | 次へ