Compartir a través de


Inicializar campos estáticos de tipo de valor en línea

Actualización: noviembre 2007

Nombre de tipo

InitializeValueTypeStaticFieldsInline

Identificador de comprobación

CA2207

Categoría

Microsoft.Usage

Cambio problemático

No problemático

Motivo

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

Descripción de la regla

Al declarar un tipo de valor, se realiza una inicialización predeterminada en la que los campos de tipo de valor se establecen en cero y los campos de tipo de referencia se establecen en null (Nothing en Visual Basic). Un constructor estático explícito sólo garantiza la ejecución antes de llamar al constructor de la instancia o al miembro estático del tipo. Por tanto, si se crea el tipo sin haber llamado al constructor de la instancia, el constructor estático no garantiza la ejecución.

Si los datos estáticos se inicializan en línea y no se declara el constructor estático explícito, los compiladores de C# y Visual Basic agregan el indicador beforefieldinit a la definición de clase de MSIL. Además, los compiladores agregan un constructor estático privado que contiene código de inicialización estática. Este constructor estático privado garantiza la ejecución antes de obtener acceso a cualquier campo estático 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 advertencias

No suprima las advertencias de esta regla.

Reglas relacionadas

Inicializar campos inline estáticos de tipos de referencias