CA2207: Inicializar campos estáticos de tipo de valor insertados

Propiedad Value
Identificador de la regla CA2207
Título Inicializar campos estáticos de tipo de valor insertados
Categoría Uso
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 No

Causa

Un tipo de valor declara un constructor estático explícito.

Descripción de la regla

Cuando se declara un tipo de valor, se somete a una inicialización predeterminada en la que todos los campos de tipo de valor se establecen en cero y todos los campos de tipo de referencia se establecen en null ( Nothing en Visual Basic). Solo se garantiza que un constructor estático explícito se ejecute antes de que se llame a un constructor de instancia o a un miembro estático del tipo. Por consiguiente, si el tipo se crea sin llamar a un constructor de instancia, no se garantiza que el constructor estático se ejecute.

Si todos los datos estáticos se inicializan en línea y no se declara ningún constructor estático explícito, los compiladores de C# y Visual Basic agregan la beforefieldinit marca a la definición de clase CIL. Los compiladores también agregan un constructor estático privado que contiene el código de inicialización estático. Se garantiza que este constructor estático privado se ejecutará antes de que se acceda a los campos estáticos del tipo.

Cómo corregir infracciones

Para corregir una infracción de esta regla, inicialice todos los datos estáticos cuando se declara y quite el constructor estático.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

CA1810: Inicializar campos estáticos de tipo de referencia insertados