对基类进行类型转换

时间:2016-03-28 02:49:21

标签: c# inheritance casting

我正在阅读c#的文档,我无法理解基类的Typecasting这个概念。

  

与Java一样,即使基类引用可能包含对派生类型对象的有效引用,也不能使用对基类的引用来访问派生类的成员和方法。

     

您可以隐式引用派生类来引用派生类

DerivedClass derived1 = new DerivedClass();
BaseClass base1 = derived1;`

语句"你可以通过引用类型的引用来引用派生类IMPLICITLY(在上下文中隐含的意思)"

例如,如果Derived类有一个方法说`derived_name()'

这是否意味着我不能这样做

base1.derived_name() // invalid

1 个答案:

答案 0 :(得分:3)

这意味着您不需要将派生对象显式地转换为基类型。

DerivedClass derived1 = new DerivedClass();

// This is an implicit coversion:
BaseClass base1 = derived1;  

// This is an explicit conversion:
DerivedClass derived2 = (DerivedClass) base1;

无论您如何转换,都无法从基类型的变量中调用派生类中定义的方法。要从派生类型调用方法,您需要显式转换为该类型:

((DerivedClass) base1).derived_name();
相关问题