C#代码需要完美的输出和理由

时间:2013-04-19 07:37:18

标签: c#-3.0

 class Base
    {
        public virtual void Method()
        {
            Console.WriteLine("Base method");
        }
    }
    class Derived : Base
    {
        public override void Method()
        {
            Console.WriteLine("Derived method");
        }
    }
    class MyClient
    {
        public static void Main()
        {

            Base b1 = new Derived();
            b1.Method(); // Displays 'Base Method' 
           Console.ReadLine();
        }
    } 

应该输出什么?

它是怎么来的?请解释

2 个答案:

答案 0 :(得分:1)

输出应该是,,`派生方法。“当你覆盖派生类中的方法时,你正在为该类的任何实例更改该方法的实现。

因此,即使您将b1引用为Base,运行时也知道它实际上是Derived的实例,并将使用后者的实现。

答案 1 :(得分:0)

它将显示“派生方法”。现在来看代码,你在Class Myclient中究竟做了什么。看看你正在用B类构造函数创建一个Derived类的对象。运行时间将经过{{1} } class,并创建derived类的实例。结果将是“派生方法”