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 9 | 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.
Reglas relacionadas
CA1810: Inicializar campos estáticos de tipo de referencia insertados