Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eigenschaft | Wert |
---|---|
Regel-ID | CA2207 |
Titel | Statische Felder für Werttyp inline initialisieren. |
Kategorie | Verwendung |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | No |
Ein Werttyp deklariert einen expliziten statischen Konstruktor.
Wenn ein Werttyp deklariert wird, wird eine Standardinitialisierung durchgeführt, bei der alle Werttypfelder auf 0 (null) und alle Verweistypfelder auf null
(Nothing
in Visual Basic) festgelegt sind. Ein expliziter statischer Konstruktor wird nur vor dem Aufruf eines Instanzkonstruktors oder statischen Members des Typs garantiert ausgeführt. Wenn der Typ ohne einen Aufruf eines Instanzkonstruktors erstellt wird, wird der statische Konstruktor daher nicht garantiert ausgeführt.
Wenn alle statischen Daten inline initialisiert werden und kein expliziter statischer Konstruktor deklariert wird, fügen die Compiler C# und Visual Basic der CIL-Klassendefinition das beforefieldinit
Flag hinzu. Die Compiler fügen auch einen privaten statischen Konstruktor hinzu, der den statischen Initialisierungscode enthält. Dieser private statische Konstruktor wird garantiert ausgeführt, bevor auf statische Felder des Typs zugegriffen wird.
Initialisieren Sie alle statischen Daten nach deren Deklaration, und entfernen Sie den statischen Konstruktor, um einen Verstoß gegen diese Regel zu korrigieren.
Unterdrücken Sie keine Warnung dieser Regel.
CA1810: Statische Felder von Referenztypen inline initialisieren.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: