C# 入門 & 実践 / C sharp

3-21. インターフェイス / キャストして使用 / is , as /


前回見たようなインターフェイスを実装したクラス ( GoodBad ) のインスタンスを

GoodBad gb = new GoodBad();

IGood ig = gb is IGood;
IBad ib = gb as IBad;

とします、すると、
ig は gb の持つ IGood の機能だけ利用できるオブジェクトになります。
ib は gb の持つ IBad の機能だけ利用できるオブジェクトになります。

とこんな方法で使用するそうです。

* is , as の違い。
ここで、is,asの両方を使ってみましたが、ほぼ同じようなものです。

is は、キャストできない場合、例外処理を行います。
as は、キャストできない場合、nullを返します。

as を使えば例外処理の必要なく進めることができます。

GoodBad gb = new GoodBad();
IBad ib = gb as IBad;
if( ib != null ){
    // メソッド
    ib.Bad();
}
みたいな感じで。

IBad ib = gb as IBad;

IBad ib = gb;
と省略した場合
is IBad
と同じになるので、実装されていない場合は、例外処理されます。



3-20. Interface / インターフェイスの実装 « 3. C# 入門 / 基礎、型、文法、基本?

C# 入門 & 実践 / C sharp