2 つのクラスがA
ありB
、B が A から派生する場合:
class A {}
class B : A { }
B
toのインスタンスを非常にうまくアップキャストできますA
。
B b = new B();
A a = b;
これで、 ECMA-335 (Common Language Infrastructure (CLI) Partitions I to VI)の 132 ページに記載されているように、ランタイムが基になる型が B であると判断する方法を理解できます。
インスタンス化された型のオブジェクトは、実行時に正確な型 (ジェネリック引数の型と数を含む) を回復するのに十分な情報を運ぶ必要があります。[理論的根拠: これは、キャストとテストのインスタンス、およびリフレクション機能を正しく実装するために必要です。
では、ランタイムは、基になる型がB
実際にはA
. で使用可能なメソッドが表示されないことはわかっていますB
が、基になる型がB
である場合、格納場所の型をどのように格納しますA
か?
それは理にかなっていますか?