繁体   English   中英

从派生类转换为基类

[英]Cast to base class from derived class

我的代码:

class MyBaseClass 
{ 
    public void Print() 
    { 
        Console.WriteLine("This is the base class."); 
    } 
} 

class MyDerivedClass : MyBaseClass 
{ 
    new public void Print() 
    { 
        Console.WriteLine("This is the derived class."); 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
        MyDerivedClass derived = new MyDerivedClass(); 
        MyBaseClass mybc = (MyBaseClass)derived; 

        derived.Print(); // Call Print from derived portion. 
        mybc.Print(); // Call Print from base portion. 
    } 
} 

如果我更改行: MyBaseClass mybc = (MyBaseClass)derived; MyBaseClass mybc = new MyBaseClass(); ,结果相同。

我的问题:您能告诉我有什么区别吗?

谢谢!

好吧,您的第一个代码是强制转换。 这意味着您继承的所有属性在该强制转换后仍将保留在对象mybc中。

MyBaseClass mybc = new MyBaseClass();

只是创建您的基类的全新实例。 由于您对打印方法进行了硬编码,因此它们不能更改任何输出,因为它们都是同一类型。

如果您要打印类的属性(例如名称和数字),则会看到不同之处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM