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