CA2207. Используйте встроенную инициализацию статических полей типов значенийCA2207: Initialize value type static fields inline

TypeNameTypeName InitializeValueTypeStaticFieldsInlineInitializeValueTypeStaticFieldsInline
CheckIdCheckId CA2207CA2207
КатегорияCategory Microsoft.UsageMicrosoft.Usage
Критическое изменениеBreaking Change Не критическоеNon Breaking

ПричинаCause

Тип значения объявляет явный статический конструктор.A value-type declares an explicit static constructor.

Описание правилаRule description

При объявлении типа значения, она подвергается инициализация по умолчанию, где все поля типа значения присваивается нулевое значение, а все поля ссылочного типа присваивается null (Nothing в Visual Basic).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.

Если все статические данные инициализированный встроенные и объявляется явный статический конструктор, компиляторы C# и Visual Basic добавьте beforefieldinit флаг к определению класса MSIL.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.

Устранение нарушенийHow to fix violations

Чтобы устранить нарушение этого правила инициализацию всех статических данных, если он объявлен и удалите статический конструктор.To fix a violation of this rule initialize all static data when it is declared and remove the static constructor.

Отключение предупрежденийWhen to suppress warnings

Для этого правила отключать вывод предупреждений не следует.Do not suppress a warning from this rule.

CA1810: Инициализируйте статические поля ссылочного типа встроеннымиCA1810: Initialize reference type static fields inline