Today I came up with an interesting problem. I noticed that the following code:
class A
{
    public A()
    {
        Print();
    }
    public virtual void Print()
    {
        Console.WriteLine("Print in A");
    }
}
class B : A
{
    public B()
    {
        Print();
    }
    public override void Print()
    {
        Console.WriteLine("Print in B");
    }
}
class Program
{
    static void Main(string[] args)
    {
        A a = new B();
    }
}
Prints
Print in B
Print in B
I want to know why does it print the "Print in B" twice.
 
     
     
     
     
     
     
    