2010年1月22日金曜日

BaseClass(基本クラス)、DerivedClass(派生クラス)1,2を定義して、DerivedClass1,2をそれぞれインスタンス化しBaseClass型にUpcastして、それをさらにDowncastする時、as演算子を使用してDowncastできない場合はnullを返してみる。

using System;


// 基本クラス
class BaseClass{}


// 派生クラス1
class DerivedClass1 : BaseClass{}


// 派生クラス2
class DerivedClass2 : BaseClass{}


class MainClass
{
    static void Main()
    {
        /* DerivedClass1,2のインスタンスを
         * BaseClass型にUpcast */
        BaseClass sample1 = new DerivedClass1();
        BaseClass sample2 = new DerivedClass2();


        /* sample1,2をそれぞれDowncast */
        sample1 = sample1 as DerivedClass1;
        sample2 = sample2 as DerivedClass1;
        
        // nullか確認 出力値:False True
        Console.WriteLine
            ("{0} {1}"
            null == sample1, null == sample2);
    }
}

0 コメント:

コメントを投稿