Heim > Backend-Entwicklung > C++ > Wie werden statische Variablen in C# initialisiert?

Wie werden statische Variablen in C# initialisiert?

Barbara Streisand
Freigeben: 2025-01-03 18:05:41
Original
691 Leute haben es durchsucht

How are Static Variables Initialized in C#?

Initialisierung statischer Variablen in C#

In C# werden statische Variablen je nach Vorhandensein eines statischen Konstruktors und des Flags beforefieldinit unterschiedlich initialisiert .

Initialisierung ohne Statik Konstruktor

Wenn innerhalb einer Klasse kein statischer Konstruktor definiert ist, werden statische Variablen initialisiert:

  • Wenn der Typ in den Speicher geladen wird.
  • Vorher Es werden beliebige Instanzkonstruktoren aufgerufen.
  • Eifrig, d. h. die Werte werden zugewiesen sofort.

Initialisierung mit einem statischen Konstruktor

Wenn ein statischer Konstruktor vorhanden ist:

  • beforefieldinit Flag:

    • false: Statische Variablen werden vor dem statischen Konstruktor initialisiert wird aufgerufen.
    • true: Statische Variablen werden beim ersten Zugriff träge initialisiert.
  • .NET 4 und früher: beforefieldinit ist standardmäßig auf false eingestellt, was zu einer eifrigen Initialisierung führt .
  • .NET 4.5 und höher: beforefieldinit ist standardmäßig auf „true“ eingestellt, was zu Lazy führt Initialisierung.

Fazit

Die Initialisierung statischer Variablen in C# hängt vom Vorhandensein eines statischen Konstruktors und dem Wert des beforefieldinit-Flags ab. Um eine ordnungsgemäße Initialisierung sicherzustellen, wird empfohlen, sich nicht auf ein bestimmtes Verhalten zu verlassen und einfach regulären Code zu verwenden, um auf statische Felder zuzugreifen.

Das obige ist der detaillierte Inhalt vonWie werden statische Variablen in C# initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage