C# 向基类进行类型转换

C# 向基类进行类型转换,c#,inheritance,casting,C#,Inheritance,Casting,我正在阅读c#的文档,我无法理解向基类进行类型转换的概念 与Java中一样,即使基类引用可能包含对派生类型对象的有效引用,也不能使用对基类的引用来访问派生类的成员和方法 您可以通过隐式引用派生类型来引用派生类: “您可以通过隐式引用派生类型来引用派生类(隐式在上下文中是什么意思)”这句话是什么意思 例如,如果派生类有一个方法,那么就说'Derived_name()' 这是否意味着我不能这样做 base1.derived\u name()//无效这意味着您不需要显式地将派生对象强制转换为基类型 D

我正在阅读c#的文档,我无法理解向基类进行类型转换的概念

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

您可以通过隐式引用派生类型来引用派生类

“您可以通过隐式引用派生类型来引用派生类(隐式在上下文中是什么意思)”这句话是什么意思

例如,如果派生类有一个方法,那么就说'Derived_name()'

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


base1.derived\u name()//无效

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

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();
((DerivedClass) base1).derived_name();