2 つのクラスがAありB、B が A から派生する場合:
class A {}
class B : A { }
Btoのインスタンスを非常にうまくアップキャストできます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か?
それは理にかなっていますか?