Sdílet prostřednictvím


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.

CA1810: Inicializujte odkazový typ statického pole vloženě