Events
Sep 18, 9 PM - Sep 18, 9 PM
.NET 10 launches at .NET Conf 2025! Tune in with the .NET community to celebrate and learn about the new release on November 11 - 13.
Save the dateThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Property | Value |
---|---|
Rule ID | CA2207 |
Title | Initialize value type static fields inline |
Category | Usage |
Fix is breaking or non-breaking | Non-breaking |
Enabled by default in .NET 9 | No |
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 null
(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 CIL 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.
.NET feedback
.NET is an open source project. Select a link to provide feedback:
Events
Sep 18, 9 PM - Sep 18, 9 PM
.NET 10 launches at .NET Conf 2025! Tune in with the .NET community to celebrate and learn about the new release on November 11 - 13.
Save the dateAsk Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in