it is indeed weird that C# would call from the base class the derived method. That kind of behaviour you'd expect from calling abstract methods in the base class.
FB > Thanks to FxCop, I've just discovered quite a fundamental > difference between > C++ and C#. > > Check out the following code. > > class Base > { > public Base( ) > { > Method( ) ; > } > > public virtual void Method( ) > { > Console.Write("I'm the Base"); > } > } > > class Derived > : Base > { > public Derived( ) > { > Method( ) ; > } > > public override void Method() > { > Console.WriteLine("I'm the Derived"); > } > } > > Constructing a Derived object means a call is made to Base's > constructor which calls Method; not Base's method (as in > C++), but Derived's Method. At this point, Derive is only > partially constructed. When I stumbled over this in C++, I > was surprised that the base constructor didn't call the > derived method. I soon changed my mind when it was explained > to me that C++ is implemented this way as unexpected results > could happen by called Derived's virtual method. > > Would anyone like to comment? Personally, I feel C++ is > correct in this instance. > > Cheers, > > Steve > >