using System;
class BaseClass
{
public virtual string s()
{
return "BaseClass";
}
}
class DerivedClass1 : BaseClass
{
public override string s()
{
return "DerivedClass1";
}
}
class DerivedClass2 : BaseClass
{
public override string s()
{
return "DerivedClass2";
}
}
class MainClass
{
// アップキャストしたりダウンキャストしたり
static void Main()
{
/* DerivedClass1をBaseClassに
* アップキャスト */
BaseClass b1 = new DerivedClass1();
// b1をDerivedClass1に可能ならばダウンキャスト
b1 = b1 as DerivedClass1;
if (b1!=null)
{
Console.WriteLine
("b1を{0}にダウンキャスト可能",b1.s());
}
else
{
Console.WriteLine
("b1をDerivedClass1にダウンキャストできない");
}
// b1をDerivedClass2に可能ならばダウンキャスト
b1 = b1 as DerivedClass2;
if (b1!=null)
{
Console.WriteLine
("b1を{0}にダウンキャスト可能", b1.s());
}
else
{
Console.WriteLine
("b1をDerivedClass2にダウンキャストできない");
}
}
}
0 コメント:
コメントを投稿