I have read the some materials about the different behaviour of virtual function called in constructor or destructor between c++ and c#. And i test the below code to confirm that c# could call the virtual dirived virtual function as its object exists before the constructor. However i found that the result is same as the similar code in c++. Could any one tell me the reason that why the c# could not display "22" but just "12". 

C# code

```
public class Base
{
    public Base() { fun(); }
    public virtual void fun() { Console.WriteLine(1); }
}
public class Derived : Base
{
    public Derived() { fun(); }
    public virtual void fun() { Console.WriteLine(2); }
}

```

C++ code

```
class Base
{
public:
    Base(){fun();}
    virtual void fun(){cout<<1;}
};
class Derived : Base
{
public:
    Derived(){fun();}
    virtual void fun(){cout<<2;}
};

```

the output result of both c++ and C# is "12".