2016-10-28 4 views
-1

派生型(SuperCar)のオブジェクトを基本型(Car)のオブジェクトを受け入れるメソッドに渡しています。派生オブジェクト(SuperCar)にキャスト(Car)した後も、値は保持されます(プログラムは4を出力します)。基本クラスを受け入れるメソッドに派生オブジェクトを渡す

私がしていると思っていますダウンキャスティングなぜアップキャストは値を保持していますか?それはどのようにC#で呼び出されますか?

+0

これはまさに行われることです。 – Darek

答えて

0

キャストはオブジェクトを変更しません。それはちょうどコンパイラがオブジェクトを参照する方法を変更しますオブジェクト。 SuperCarからCarにキャストするときに、「これはCarです。」とコンパイラーに伝えるだけです。 " まだSuperCarですが、実際にはコンパイラはを知っていませんです。

アップキャストとすると、 "this is a SuperCar"とコンパイラに伝えられます。そうであれば、キャストはうまく動作します。 ではない場合、ランタイムは、それがそうでないタイプであると判断し、エラーをスローします。

関連する問題