Partager via


CA2207 : Initialisez les champs statiques des types valeur en ligne

TypeName

InitializeValueTypeStaticFieldsInline

CheckId

CA2207

Catégorie

Microsoft.Usage

Modification avec rupture

Modification sans rupture

Cause

Un type valeur référence déclare un constructeur statique explicite.

Description de la règle

Lorsqu'un type valeur est déclaré, il fait l'objet d'une initialisation par défaut, dans laquelle la valeur de tous ses champs de type valeur est mise à zéro et tous les champs de type référence se voient attribuer la valeur null (Nothing en Visual Basic). L'exécution d'un constructeur statique explicite est garantie uniquement avant l'appel à un constructeur d'instance ou d'un membre statique du type. Par conséquent, si le type est créé sans appeler de constructeur d'instance, l'exécution du constructeur statique n'est pas garantie.

Si toutes les données statiques sont initialisées inline et si aucun constructeur statique explicite n'est déclaré, les compilateurs C# et Visual Basic ajoutent l'indicateur beforefieldinit à la définition de classe MSIL. Les compilateurs ajoutent également un constructeur statique privé qui contient le code d'initialisation statique. L'exécution de ce constructeur statique privé est garantie avant l'accès à tout champ statique du type.

Comment corriger les violations

Pour corriger une violation de cette règle, initialisez toutes les données statiques lorsqu'elles sont déclarées et supprimez le constructeur statique.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Règles connexes

CA1810 : Initialisez les champs statiques de type référence en ligne