.net column

.NET開発者のためのブログメディア
開発環境

C#でのobjectのキャストについて詳しく解説!

2020年08月27日
SE
objectのキャストとはどういったものがあるのでしょう。
PM
キャストとは値の変換という意味です。ここでは2種類の方法について見ていきましょう。

C#でのobjectのキャストについて

今回は、C#でのobjectのキャストについてご説明します。
キャストするには、””()””を使用する方法と、as演算子を使用する方法があり、それぞれの違いについてご説明します。

C#でのobjectのキャストに興味のある方はぜひご覧ください。

アップキャスト

C#ではobjectのアップキャストができます。アップキャストとは、スーパークラスにキャストすることです。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

サブクラスをobjectにキャストし、objectをスーパークラスにアップキャストしています。このように、C#ではobjectのアップキャストができます。

ダウンキャスト

C#ではobjectのダウンキャストができます。ダウンキャストとは、サブクラスにキャストすることです。

この場合、アップキャストしたものをダウンキャストしなければキャストは成功しません。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

ダウンキャスできていることが分かります。

では、ダウンキャストに失敗するとどうなるか見てみましょう。

実行結果は以下のようになります。

このように、C#ではobjectのダウンキャストができます。

キャストに失敗すると、InvalidCastExceptionが発生します。

as 演算子

C#では、キャストとよく似た動きをする演算子に「as演算子」があり、as 演算子は値型のキャストはできませんが、参照型のキャストができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

参照型は as 演算子でキャストできますので、結果が同じになることが分かります。

では、as 演算子でキャストできないときの挙動を見てみましょう。

実行結果は以下のようになります。

as 演算子でキャストできない場合、nullになります。

値型のキャスト

C#では例えば、int型をobject型に変換し、int型にキャストする場合、キャストは成功します。

しかし、double型をobject型に変換し、int型にキャストすると、例外が発生します。

このような場合は、Convertクラスを利用します。

このように、C#ではConvertクラスを利用することで別の値型に変換(キャスト)できます。

is 演算子

C#には、あるオブジェクトが指定された型と互換性があるかをチェックする is 演算子があります。

実際のソースコードを見てみましょう。

Superクラスを継承しているかチェックし、継承している場合はアップキャストします。

またC#では、is 演算子を使用したキャストも可能です。

このように、C#の is 演算子を使用すれば、チェックと同時にキャストすることもできます。

SE
アップキャストにダウンキャスト、実際にソースコードを書いてみるとより理解できそうですね。
PM
そうですね。演算子を用いたソースコードもご紹介しましたので参考にしながらより理解を深めてください。

C#でobjectをキャストしましょう

いかがでしたでしょうか。アップキャストやダウンキャスト、as 演算子、is 演算子の使い方についてご説明しました。

ぜひご自身でソースコードを書いて、理解を深めていきましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)