Megosztás a következőn keresztül:


CA2207: Értéktípus statikus mezőinek inicializálása beágyazottan

Tulajdonság Érték
Szabályazonosító CA2207
Cím Értéktípus statikus mezőinek inicializálása beágyazottan
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Az értéktípus explicit statikus konstruktort deklarál.

Szabály leírása

Amikor egy értéktípus deklarálva van, az alapértelmezett inicializáláson megy keresztül, ahol az összes érték típusú mező nullára van állítva, és az összes referencia típusú mező (Nothinga Visual Basicben) értékre van állítva null . Az explicit statikus konstruktorok csak a példánykonstruktor vagy a típus statikus tagjának meghívása előtt futnak. Ezért ha a típus példánykonstruktor meghívása nélkül jön létre, a statikus konstruktor nem garantáltan fut.

Ha minden statikus adat inicializálva van, és nincs explicit statikus konstruktor deklarálva, a C# és a Visual Basic fordítói hozzáadják a beforefieldinit jelölőt a CIL osztálydefinícióhoz. A fordítók egy privát statikus konstruktort is hozzáadnak, amely tartalmazza a statikus inicializálási kódot. Ez a privát statikus konstruktor garantáltan futni fog, mielőtt a típus bármely statikus mezője elérhető lesz.

Szabálysértések kijavítása

A szabály megsértésének kijavításához inicializálja az összes statikus adatot a deklaráláskor, és távolítsa el a statikus konstruktort.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését.

CA1810: Referenciatípus statikus mezőinek inicializálása beágyazottan