Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA2207 |
| Başlık | Değer türü statik alanları satır içi başlatın |
| Kategori | Kullanım |
| Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
| .NET 10'da varsayılan olarak etkin | Hayır |
Neden
Değer türü açık bir statik oluşturucu bildirir.
Kural açıklaması
Bir değer türü bildirildiğinde, tüm değer türü alanlarının sıfır ve tüm başvuru türü alanlarının (null Visual Basic'te) olarak ayarlandığı Nothing varsayılan bir başlatmadan geçer. Açık statik oluşturucunun yalnızca bir örnek oluşturucusu veya türün statik üyesi çağrılmadan önce çalıştırılması garanti edilir. Bu nedenle, tür bir örnek oluşturucu çağrılmadan oluşturulursa, statik oluşturucunun çalışması garanti değildir.
Tüm statik veriler satır içinde başlatılırsa ve açık statik oluşturucu bildirilmemişse, C# ve Visual Basic derleyicileri bayrağını beforefieldinit CIL sınıf tanımına ekler. Derleyiciler ayrıca statik başlatma kodunu içeren özel bir statik oluşturucu da ekler. Bu özel statik oluşturucunun, türündeki statik alanlara erişilmeden önce çalışması garanti edilir.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için, bildirildiğinde tüm statik verileri başlatın ve statik oluşturucuyu kaldırın.
Example
// This struct violates the rule.
struct BadStruct
{
private static readonly int s_first;
private static readonly int s_second;
static BadStruct()
{
s_first = 1;
s_second = 2;
}
// ...
}
// This struct satisfies the rule.
struct GoodStruct
{
private static readonly int s_first = 1;
private static readonly int s_second = 2;
// ...
}
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan uyarıyı bastırmayın.