Delen via


CA2207: Waardetype statische velden inline initialiseren

Eigenschappen Weergegeven als
Regel-id CA2207
Titel Waardetype statische velden inline initialiseren
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een waardetype declareert een expliciete statische constructor.

Beschrijving van regel

Wanneer een waardetype wordt gedeclareerd, ondergaat het een standaard initialisatie waarbij alle waardetypevelden zijn ingesteld op nul en alle verwijzingstypevelden zijn ingesteld null op (Nothing in Visual Basic). Een expliciete statische constructor wordt alleen gegarandeerd uitgevoerd voordat een instantieconstructor of statisch lid van het type wordt aangeroepen. Als het type wordt gemaakt zonder een instantieconstructor aan te roepen, wordt de statische constructor daarom niet gegarandeerd uitgevoerd.

Als alle statische gegevens inline worden geïnitialiseerd en er geen expliciete statische constructor wordt gedeclareerd, voegen de C# en Visual Basic-compilers de beforefieldinit vlag toe aan de CIL-klassedefinitie. De compilers voegen ook een privé statische constructor toe die de statische initialisatiecode bevat. Deze privé statische constructor wordt gegarandeerd uitgevoerd voordat statische velden van het type worden geopend.

Schendingen oplossen

Als u een schending van deze regel wilt oplossen, initialiseert u alle statische gegevens wanneer deze wordt gedeclareerd en verwijdert u de statische constructor.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken.

CA1810: Referentietype statische velden inline initialiseren