CA2207: Inicializujte vloženou hodnotu statických polí
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2207 |
Název | Inicializujte statická pole s typem hodnoty vloženě |
Kategorie | Využití |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Typ hodnoty deklaruje explicitní statický konstruktor.
Popis pravidla
Když je deklarován typ hodnoty, projde výchozí inicializací, kde jsou všechna pole typu hodnota nastavena na nulu a všechna pole typu odkazu jsou nastavena na null
(Nothing
v jazyce Visual Basic). Explicitní statický konstruktor je zaručeno spuštění pouze před konstruktorem instance nebo statickým členem typu. Proto pokud je typ vytvořen bez volání konstruktoru instance, statický konstruktor není zaručeno spuštění.
Pokud jsou všechna statická data inicializována vložena a není deklarován žádný explicitní statický konstruktor, kompilátory jazyka C# a Visual Basic přidávají beforefieldinit
příznak do definice třídy CIL. Kompilátory také přidávají privátní statický konstruktor, který obsahuje kód statické inicializace. Tento privátní statický konstruktor je zaručen, že se spustí před přístupem ke statickým polím typu.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla inicializovat všechna statická data při deklaraci a odebrat statický konstruktor.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.