Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 9-ben | 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ő (null
a Visual Basicben) értékre van állítva Nothing
. 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.
Kapcsolódó szabályok
CA1810: Referenciatípus statikus mezőinek inicializálása beágyazottan