2012-01-26 8 views
3

で、他のサブクラスのオブジェクトに1つのサブクラスを型キャストすることができますが、以下のキャスト:私は私が入力したいのC#

Class A 
{ 
} 

Class B : A 
{ 
} 

Class C: A 
{ 
} 
Class D{ 
B b = new b(); 
C c = (C) b; 
} 

を、私は、クラスB

+4

あなたはこれを行うべきだと思いますか? – jeroenh

答えて

5

にキャストクラスCを入力することができません、それができませんどのように提案して下さいBはではなくであるため、このキャストは失敗する必要があります。 1つの回避策は、カスタムの明示的変換演算子を実装することですが、それ以外の方法はありません - 同じ継承ツリーでより具体的な型(ダウンキャスト)または基本クラス(アップキャスト)にのみキャストできます。

2

できません。 BをAにキャストすることができます。

2

これは単に不可能です。そのような変換はできません。

実際には同じ基本クラスですが、と同じではありません。たとえば、これを見てください。

TriangleShapeRectangleあるShape

である。しかし、彼らは異なっているので、あなたは、RectangleTriangleを変換することはできません。

1

いいえ、できません。あるクラスから別のクラスにプロパティをコピーする場合は、AutoMapperと考えられます。

1

できません。クラスCとクラスBはクラス階層内では関連していません。

+0

これはあまり似ていません。これを使って、2人の息子がお互いに母親であると言うこともできます。 – ChaosPandion

+0

良い点!私はそれを "小さな" – Jeb

1
Animal 
{ 
} 

Giraffe : Animal 
{ 
} 

Shark : Animal 
{ 
} 

あなたの質問はどのようにキリンをサメに変えますか?残念ながら、それはできません。

関連する問題