Initialisation des variables statiques en C#
Lorsque vous travaillez avec des variables statiques en C#, il est crucial de comprendre le moment de leur initialisation.
Moment de l'initialisation des variables statiques
Les variables statiques sont initialisé lorsque :
-
Le constructeur statique est présent : Si une classe a un constructeur statique (static MyStaticConstructor()), les variables statiques sont initialisées lorsque le constructeur statique est appelé pour la première fois time.
-
Pas de constructeur statique : S'il n'y a pas de constructeur statique, les variables statiques sont initialisées lorsque le type est chargé en mémoire.
Déclencheur de chargement de type
Le chargement de la classe est déclenché par :
- Création d'une instance de la classe
- Accès à un membre statique de la classe
- La classe étant explicitement chargée à l'aide réflexion
Considérations supplémentaires
- Dans .NET 4, l'initialisation des variables statiques est devenue plus « paresseuse », ce qui signifie qu'elles ne sont initialisées que lors du premier accès.
- Si l'indicateur beforefieldinit est défini, les variables statiques sont initialisées avant l'appel d'un constructeur d'instance. Cet indicateur est défini par la présence d'un constructeur statique.
- Pour garantir un comportement cohérent, il est recommandé d'éviter de s'appuyer sur un timing d'initialisation spécifique et d'initialiser simplement les variables statiques via un accès régulier au code.
Pour plus de détails et une explication complète, reportez-vous à l'article de Jon Skeet lié dans la réponse originale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!