I was wondering about when does a static variable(in a class) come into picture(initialized)? Is it after the instance constructor called for the first time or after the class loads? When does a class loading occur?
A:
It may depend on the programming language and the environment, but usually static variables are initialized on class load.
Gintautas Miliauskas
2010-10-19 06:58:08
+5
A:
Oh, that is complex. It depends on whether the beforefieldinit
flag is set, which in turn (in C#) depends on whether there is a static constructor. And worse; in .NET 4 I believe the behaviour changed to make it more "lazy" than it used to be.
Frankly, I wouldn't code to any specific behaviour here; simply: static fields will be initialized before you try to use them, as long as you use regular code to access them.
Marc Gravell
2010-10-19 07:11:03
+1 for "I wouldn't code to any specific behaviour", wise advice
smirkingman
2010-10-19 07:43:43