[Mono-list] Static constructor issue

Andreas Färber andreas.faerber at web.de
Thu Sep 7 17:28:35 EDT 2006


Am 07.09.2006 um 21:07 schrieb Jonathan Gilbert:

>> The metaphor I was given way back in my student days is this:
>> Think of building a watch, you first start with the internals (gears
>> and such) and this can be seen as the Child.  Then you put on the
>> outer parts (housing, glass, etc.) where this is seen as the Parent.
>>
>> The reason why it's different for instance ctors is because you call
>> the Parent ctor specifically before the code inside the Child ctor
>> runs.
>
> I'm not sure that metaphor is really useful :-)

I second that :-)

Either way this is what it is and we'll have to live with it.

> If you want to force the
> base class' static constructor to run first, then access any member  
> of the
> base class from the derived class' static constructor.

Yeah, that's what I posted earlier - list is pretty slow today...

> The reason the base
> class' static constructor is not immediately run is that the  
> inheritance
> rules involved don't apply to static members. Unlike other  
> languages, .NET
> *does* offer inheritance of static members, but the derived class  
> -- in
> terms of its static members -- is not really seen as a "kind-of"  
> the base
> class.
>
> To put it succinctly: The execution of Child's .cctor does not in  
> and of
> itself constitute accessing a member of Parent.

Okay, many thanks for the explanations to all of you!

Andreas


More information about the Mono-list mailing list