我知道已经发布了一些与同一主题相关的问题,但我看到了不同的答案,所以我很困惑哪个答案是正确的。
在下面的链接中,人们提到无法向下 转换将基类型转换/转换为派生类型
虽然在下面的这个链接上,人们提到只有当派生类是基类 向下转换和向上转换的实例时,向下转换才是可能的
我做了一个小实验,并使用直接转换在一个迷你项目(C#)上实现了向下转换,例如: DerivedClass dc = (DerivedClass) baseClass 没有检查 DerivedClass 是否是 BaseClass 的实例,令我惊讶的是,它正在工作很好,完全没有错误,那么为什么人们说向下转换是不可能的?
所以我的问题是,向下转换真的不可能吗?为什么人们似乎对这个话题有不同的答案?毕竟哪一个是真正的答案?有人可以更详细地解释一下吗?
示例代码:
public class Order { }
public class PurchaseOrder : Order { // some new properties here for PurchaseOrder}
public static PurchaseOrder GetOrder()
{
Order order = new Order();
return (PurchaseOrder)order;
}