I've the same feeling and like the C++ approach. The C# approach is the same as the Java one. That's sometimes the cause of really interesting debugging sessions... I'm assuming they implemented it the way it is because that's much simpler.
Regards, Bert -----Original Message----- From: Stephen Dunn [mailto:[EMAIL PROTECTED] Sent: Thursday, June 19, 2003 3:59 PM 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
