【C#】型変換(キャスト)とは?使い方を徹底解説

C#

こんにちは、リバティエンジニア[?]のたくやです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回はC#での「型変換(キャスト)」について、初心者の方にもわかりやすく理解できるようにお話していきます。

【C#】キャストとは?

C#ではコンパイルされる時に静的に型が指定されるため、「型」が変数の「型」に暗黙的に変換することができない限り、再びその変数を宣言したりその変数とは違う型の値を代入したりすることができません。

ここでひとつ例を紹介します。

C#ではstringの変数をint型の変数に暗黙的に変換することはできません。なので、int型で宣言した変数、”Hello”という文字列を代入することはできません。


int test;  
test = "Hello";

上記のような状態ですね。

このような時に別の型への代入を可能にするために型変換をする必要があります。このことを「キャスト」といいます。

C#キャストのサンプル

では早速様々な、型から型へのキャストのサンプルをご紹介します。

string型から数値型へのキャスト


// int型へキャスト
int a = int.Parse("123");
// long型へキャスト
long a = long.Parse("123");
// float型へキャスト
float a = float.Parse("123.45");
// double型へキャスト
double a = double.Parse("123.45");

数値型からstring型へキャスト


// int型からキャスト
int i = 123;
string  = i.ToString();

// long型からキャスト
long l = 123;
string a = l.ToString();

// float型からキャスト
float f = 123.45;
string a = f.ToString();

// double型からキャスト
double d = 123.45;
string a = d.ToString();

指定する型へキャストする

ここで、簡単に指定した型へのキャストをご紹介します。


データ型 hensuu = (データ型)obj;

このように異なるデータ型の「hensuu」と「obj」を”()”で代入先のデータ型を記述することでキャストすることができます。

例えば以下のように使用できます。


int a = 1;
double b = 2.3;
a = (int)b;

これはintの変数にdoubleの値を代入する際のサンプルコードです。

この方法を使う際の注意点として、もしキャストができないような場合には例外が発生します。

C#で型変換(キャスト)できるかチェックする方法

想定している型とは違う型が予想される場合は、型のチェックをしてから型変換をするほうが例外も出ずに安全に処理できるので、ぜひ使ってください。

サンプルコードをご紹介します。


// int型にキャストできるかどうかチェックする
int aa;
string str = "123";
bool b = int.TryParse(str, out aa);

// DateTime型にキャストできるかどうかチェックする
DateTime aa;
string str = "2014/11/3";
bool b = DateTime.TryParse(str, out aa);

// 変数objがSample型かどうかを判定してから型変換する(方法A)
if (obj.GetType() == typeof(Sample))
{
  Sample s = (Sample)obj;
}

// 変数objがSample型かどうかを判定してから型変換する(方法B)
if (obj is Sample)
{
  Sample s = (Sample)obj;
}

結構簡単にできるので、もしユーザが入力する項目などで想定外のパターンが予想される場合は是非使ってみてください。

まとめ

今回は、C#のキャスト(型変換)についてお話しました。

C#ではC言語やC++などよりも簡単に便利に型の相互変換を行うことができるので、ここで覚えておいてください。

他にもC#の記事が色々あるので良かったら見ていってください。

C# 世界一わかるデリゲート(delegate)について
こんにちは、リバティエンジニアのたくやです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。今回はC#における「デリゲート」について学習していきましょう!...
【結論】未経験でプログラミングの独学はぜんぜん可能
完全初心者、未経験でプログラミングの独学はできるのか?という内容についてまとめています。プログラミングの独学は難しいんのではないか。。そんな悩んでる暇があるなら勉強を始めましょう。[結論]プログラミングの独学は可能です。
【C#】enum (列挙型)がわかる!かんたん徹底解説
C#の「enum」とは?(列挙型) 「enum」とは列挙型を使用するために使われます。 列挙型を簡単に説明すると「名前の付いた定数の集まり」です。列挙型で定義される定数を「列挙子リスト」と呼ぶこともあります。

なにか質問があればお問い合わせフォームでお気軽にお問合せください。
可能な限りすぐにお返事します。
一流プログラマを目指して頑張りましょう!

コメント