CA2207: Initialize value type static fields inline
For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.
|Breaking Change||Non Breaking|
A value-type declares an explicit static constructor.
When a value-type is declared, it undergoes a default initialization where all value-type fields are set to zero and all reference-type fields are set to
Nothing in Visual Basic). An explicit static constructor is only guaranteed to run before an instance constructor or static member of the type is called. Therefore, if the type is created without calling an instance constructor, the static constructor is not guaranteed to run.
If all static data is initialized inline and no explicit static constructor is declared, the C# and Visual Basic compilers add the
beforefieldinit flag to the MSIL class definition. The compilers also add a private static constructor that contains the static initialization code. This private static constructor is guaranteed to run before any static fields of the type are accessed.
To fix a violation of this rule initialize all static data when it is declared and remove the static constructor.
Do not suppress a warning from this rule.