CA2207: инициализируйте статические поля типа значений встроенными средствами

Свойство Значение
Идентификатор правила CA2207
Заголовок Используйте встроенную инициализацию статических полей типов значений
Категория Использование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 No

Причина

Тип значения объявляет явный статический конструктор.

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

При объявлении типа значения он проходит инициализацию по умолчанию, когда все поля типа значения устанавливаются в ноль, а всем полям ссылочного типа присваивается значение null (Nothing в Visual Basic). Явный статический конструктор гарантированно выполняется только перед вызовом конструктора экземпляра или статического члена типа. Таким образом, если тип создается без вызова конструктора экземпляра, статический конструктор может и не запускаться.

Если все статические данные инициализированы встроенными и не объявлены явные статические конструкторы, компиляторы C# и Visual Basic добавляют флаг в beforefieldinit определение класса CIL. Компиляторы также добавляют закрытый статический конструктор, который содержит статический код инициализации. Этот закрытый статический конструктор гарантированно выполняется перед обращением к любым статическим полям типа.

Устранение нарушений

Чтобы устранить нарушение данного правила, выполните инициализацию всех статических данных при их объявлении и удалите статический конструктор.

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует.

CA1810: инициализируйте статические поля ссылочного типа встроенными средствами