こんにちは、リバティエンジニアのFUNA(フナ)です。
現役でフリーランスのエンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。
この記事はこんな方におすすめ
- C#のキャストについて知りたい
- C#でのキャストのやり方が知りたい
今回は、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"; b ool 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)について
>> 【C#】enum (列挙型)がわかる!かんたん徹底解説
C#カテゴリの関連記事
【2021年最新版】C#学習におすすめ本のレベル別TOP3を紹介【現役エンジニアが厳選】
現役エンジニアがおすすめするC#の本・参考書のTOP3をご紹介!本当にお勧めした本だけを厳選したので、TOP3だけを紹介します。それぞれのレベル別に分けたので、自分に合ったものを選んでください。
【C#】 ファイルパスの徹底攻略。取得や結合、ファイルの存在チェック
こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#における「ファイルパス」の取り扱いについてご紹介 ...
【C#】Dictionaryの初期化はこれでOK!初期化の方法や基本を簡単解説
C#では連想配列を扱うためのクラスとして「Dictionaryクラス」があります。今回はC#での「Dictionaryクラス」について初期化の仕方などの基本から、要素の取り出しや存在確認なども解説します。
【C#入門】LINQ(リンク)とは?わかりやすく解説!
こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回は、まだLINQ(リンク)を使いこなせていない方や、初 ...
【C#】型変換(キャスト)とは?初心者でも簡単な使い方を解説
今回はC#のキャストとは何なのかについて解説します。C#ではコンパイルされる時に静的に型が指定されるため、「型」が変数の「型」に暗黙的に変換することができない限り、再びその変数を宣言したりその変数とは違う型の値を代入したりすることができません。そんな時に便利なキャストがあります。
【C#】enum (列挙型)がわかる!かんたん徹底解説
こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#で列挙型(enum)についてお話します。 目次C ...
【C#】プロパティとは?利用するメリットはあるのか。
こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#で便利な機能の一つ「プロパティ」についてお話して ...
【C#】 usingステートメントとは?サンプルコードで解説
こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回は自動でインスタンスを解放してくれる便利な機能「usi ...