我将派生类型(SuperCar)的对象传递给接受基类型(Car)对象的方法。在将(Car)转换为派生对象(SuperCar)之后,仍保留值(程序打印出4)。
我想知道我是否向下转换为什么向上转播保留值?怎么在C#中调用?
<a href="~/Survey/Take/@HttpUtility.UrlPathEncode(survey.Name)">@survey.Name</a>
答案 0 :(得分:0)
施法不会改变对象。它只是改变了编译器看到对象的方式。当您从SuperCar
投射到Car
时 - 您所做的就是告诉编译器&#34;这是Car
。这样对待它。&#34;。它实际上仍 SuperCar
,但编译器并没有知道。
当你 upcast 时,你告诉编译器&#34;这是SuperCar
&#34;。如果是,那么演员阵容就可以了。如果它不,那么运行时会检测到您说它不是一种类型,并且会抛出错误。