Udostępnij za pośrednictwem


CA2207: Inicjowanie pól statycznych typu wartościowego

TypeName

InitializeValueTypeStaticFieldsInline

CheckId

CA2207

Kategoria

Microsoft.Usage

Zmiana kluczowa

Niekluczowa

Przyczyna

Typ wartości deklaruje jawny, statyczny konstruktor.

Opis reguły

Zadeklarowany typ wartości poddawany jest domyślnemu inicjowaniu, gdzie wszystkie pola typu wartości są ustawiane na zero i wszystkie pola typu odwołania ustawiane są na null (Nothing w języku Visual Basic).Jawny konstruktor statyczny jest tylko gwarancją uruchomienia przed konstruktorem wystąpienia lub statycznego elementu członkowskiego typu, który jest wywoływany.Dlatego jeśli typ został utworzony bez wywołania konstruktora wystąpienia, uruchomienie konstruktora statycznego nie jest gwarantowane.

Jeśli wszystkie dane statyczne są zainicjowane w tekście i jawny konstruktor statyczny nie jest zadeklarowany, kompilatory C# i Visual Basic dodają flagę beforefieldinit do definicji klasy MSIL.Kompilatory dodają również prywatny statyczny konstruktor, zawierający kod inicjowania statycznego.Uruchomienie tego prywatnego konstruktora statycznego jest gwarantowane przed uzyskaniem dostępu do statycznych pól typu.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, zainicjuj wszystkie dane statyczne, gdy są deklarowane i usuń konstruktor statyczny.

Kiedy pominąć ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Powiązane reguły

CA1810: Zainicjuj wbudowane pola statyczne typu referencyjnego