2010年1月22日金曜日

is演算子を使用して、Base Class(基本クラス)へUpcastしたClass型の変数をそれぞれのDerived Class1,2(派生クラス)へDowncast可能かどうか判定してif文を使用して表示してみる。

using System;


// 基本クラス
class BaseClass{}


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


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


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


        if (sample1 is DerivedClass1)
        {
            Console.WriteLine
                ("sample1はDerivedClass1にDowncastできる");
        }
        else if (sample1 is DerivedClass2)
        {
            Console.WriteLine
                ("sample1はDerivedClass2にDowncastできる");
        }
        else
        {
            Console.WriteLine
                ("sample1はDerivedClass1,2にDowncastできない");
        }
        if (sample2 is DerivedClass1)
        {
            Console.WriteLine
                ("sample2はDerivedClass1にDowncastできる");
        }
        else if (sample2 is DerivedClass2)
        {
            Console.WriteLine
                ("sample2はDerivedClass2にDowncastできる");
        }
        else
        {
            Console.WriteLine
                ("sample2はDerivedClass1,2にDowncastできない");
        }
    }
}

0 コメント:

コメントを投稿