Interesting -- I tried it in Java too; it behaves the same as C#. Perhaps the Java guys have some perspective to offer?
-----Original Message----- From: Stephen Dunn [mailto:[EMAIL PROTECTED] Sent: Thursday, June 19, 2003 9:59 AM To: [EMAIL PROTECTED] Subject: [ADVANCED-DOTNET] Partially constructed objects in C# 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