Jon Skeet has a rather interesting article over on his blog called "Type initialization changes in .NET 4.0". In it he explains through example how static methods and variables affect the timing of when the type gets initialized. Essentially, in 3.5, as soon as you hit a reference to a type it is initialized. This is not the case with 4.0. The CLR is more intelligent now and only initializes the type once static member variables are referenced. So, if you have a static method on a type that is fully encapsulated, the method can be called without the type being initialized.