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

Wann werden statische Variablen in C# initialisiert?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-02 21:26:401017Durchsuche

When Are Static Variables Initialized in C#?

Initialisierung statischer Variablen in C#

Bei der Arbeit mit statischen Variablen in C# ist es wichtig, den Zeitpunkt ihrer Initialisierung zu verstehen.

Zeitpunkt der Initialisierung statischer Variablen

Statische Variablen sind initialisiert, wenn:

  • Statischer Konstruktor vorhanden ist: Wenn eine Klasse einen statischen Konstruktor hat (statischer MyStaticConstructor()), werden statische Variablen initialisiert, wenn der statische Konstruktor zum ersten Mal aufgerufen wird Zeit.
  • Kein statischer Konstruktor: Wenn kein statischer Konstruktor vorhanden ist, werden statische Variablen beim Laden des Typs initialisiert in den Speicher.

Type Loading Trigger

Das Laden der Klasse wird ausgelöst durch:

  • Erstellen einer Instanz der Klasse
  • Zugriff auf ein statisches Mitglied der Klasse
  • Die Klasse, die explizit mit geladen wird Reflexion

Zusätzliche Überlegungen

  • In .NET 4 wurde die Initialisierung statischer Variablen „fauler“, was bedeutet, dass sie nur beim ersten Zugriff initialisiert werden.
  • Wenn das Flag beforefieldinit gesetzt ist, werden statische Variablen initialisiert, bevor ein Instanzkonstruktor aufgerufen wird. Dieses Flag wird durch das Vorhandensein eines statischen Konstruktors gesetzt.
  • Um ein konsistentes Verhalten sicherzustellen, wird empfohlen, sich nicht auf bestimmte Initialisierungszeitpunkte zu verlassen und statische Variablen einfach durch regulären Codezugriff zu initialisieren.

Weitere Einzelheiten und eine umfassende Erklärung finden Sie im Artikel von Jon Skeet, der in der Originalantwort verlinkt ist.

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

Stellungnahme:
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