カテゴリー
C

独習C#第3版、P485 型パラメータの制約 二つの型パラメータの関係を確立する制約

using System;

namespace Chapter01All
{
    class A
    {
        public A()
        {
            Console.WriteLine("A constractor");
        }
        public void OutPutsA()
        {
            Console.WriteLine("A");
        }
    }
    class B : A
    {
        public B()
        {
            Console.WriteLine("B constractor");
        }
        public void OutPutsB()
        {
            Console.WriteLine("B");
        }

    }
    class MyGenClass<T,V> where V : T
    {
        public MyGenClass()
        {
            Console.WriteLine("MyGenClass constractor");
        }
        public void OutPutsMyGenClass()
        {
            Console.WriteLine("MyGenClass");
        }
    }

    class NakedConstraintDemo
    {
        static void Main()
        {
            MyGenClass<A, B> x = new MyGenClass<A, B>();
            x.OutPutsMyGenClass();
            
            B objB = new B();
            objB.OutPutsA();
            objB.OutPutsB();

            A ojbA = new A();
            ojbA.OutPutsA();
     
        }
    }
}

 意味が分かりません。実行の画面では、MyGenClassのインスタンスxではメンバー関数のOutPutsMyGenClass()だけ実行できました。その意味ではAのインスタンスobjAと同様です。コンストラクタも同じです。BクラスのインスタンスobjBはコンストラクタは2個呼ばれますし、OutPutsA()とOutPutsB()の両方実行できます。objBの方が普通の説明ですよね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system