C# 继承与多态中的类型转换及 System.Object 类详解
1. 类型转换问题
在编程中,有时会遇到类型转换的问题。例如,有一个从基类类型(如 Employee )到派生类型的隐式转换代码可以正常编译。但如果想将一个存储在 System.Object 引用中的对象(如 Frank Zappa )传递给 GivePromotion() 方法,直接传递会导致编译器错误:
// Error!
object frank = new Manager("Frank Zappa", 9, 3000, 40000, "111-11-1111", 5);
GivePromotion(frank);
这是因为传递的变量是 System.Object 类型,而不是 Employee 类型,且 object 在继承链中比 Employee 更高级,编译器为保证类型安全,不允许隐式转换。尽管在内存中 object 引用指向的是与 Employee 兼容的类,但编译器在编译时无法确定,只有在运行时才知道。此时可以使用显式转换来满足编译器要求,显式转换的基本模板为:
(ClassIWantToCastTo)referenceIHave
超级会员免费看
订阅专栏 解锁全文
1342

被折叠的 条评论
为什么被折叠?



