L'ordre d'initialisation des classes statiques en C# est-il déterministe ?
En C#, les classes statiques sont initialisées lors de leur première utilisation. Cependant, la séquence d'initialisation entre plusieurs classes statiques n'est pas toujours évidente. Cet article explore la nature déterministe de l'initialisation de classe statique en C# et comment elle affecte l'exécution du code.
Ordre d'initialisation déterministe
L'ordre d'initialisation de classe statique est régi par les règles suivantes :
Exemple
Considérez le code suivant :
static class B { public static int X = 7; static B() { Console.WriteLine("B.X = " + X); X = A.X; Console.WriteLine("B.X = " + X); } } static class A { public static int X = B.X + 1; static A() { Console.WriteLine("A.X = " + X); } } static class Program { static void Main() { Console.WriteLine("A = {0}, B = {1}", A.X, B.X); } }
Ce code illustre la nature déterministe de l'initialisation de classe statique. Lorsque A.X est référencé dans Main, son constructeur statique est exécuté. A.X est initialisé en utilisant B.X, ce qui déclenche l'initialisation de B. Ainsi, la sortie du code sera toujours :
A.X = 1 B.X = 7 B.X = 0 A = 1, B = 0
Conclusion
Initialisation de la classe statique en C# suit un ordre bien défini. Comprendre cet ordre est crucial pour écrire du code qui se comporte comme prévu. En adhérant aux règles décrites ci-dessus, les développeurs peuvent garantir que leurs classes statiques sont initialisées correctement et de manière cohérente, même lors de plusieurs compilations et exécutions.
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!