B
基本クラスとサブクラスを持つクラス階層が与えられた場合S
:
class B { }
class S : B { }
暗黙の変換でをS
に割り当てることができます:B
B b = new S();
これをダウンキャストしたい場合S
は、明示的にこれを行う必要があります。
B b = new S();
...
S s = (S)b;
さて、私の理解では、からS
へB
の割り当ての互換性が常にあることを保証できるので、次のように明示的なアップキャストを実行する必要はありません。
S s = new S();
B b = (B)s; // or
B b2 = s as B;
この主張は正しいですか、それとも質問にあるように、明示的なアップキャストを実行する必要がありますか?