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の方が普通の説明ですよね。