What is the use of static constructors?

Dr. Rajesh Rolen picture Dr. Rajesh Rolen · Dec 22, 2010 · Viewed 182.8k times · Source

Please explain to me the use of static constructor. Why and when would we create a static constructor and is it possible to overload one?

Answer

Marc Gravell picture Marc Gravell · Dec 22, 2010

No you can't overload it; a static constructor is useful for initializing any static fields associated with a type (or any other per-type operations) - useful in particular for reading required configuration data into readonly fields, etc.

It is run automatically by the runtime the first time it is needed (the exact rules there are complicated (see "beforefieldinit"), and changed subtly between CLR2 and CLR4). Unless you abuse reflection, it is guaranteed to run at most once (even if two threads arrive at the same time).