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 |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Değer türü açık bir statik oluşturucu bildirir.
Kural açıklaması
Bir değer türü tanımlandığında, tüm değer türü alanlarının sıfır ve tüm başvuru türü alanlarının Nothing (Visual Basic'te null) olarak ayarlandığı varsayılan bir şekilde başlatılır. 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 yerleşik olarak başlatılırsa ve açık bir statik oluşturucu bildirilmemişse, C# ve Visual Basic derleyicileri beforefieldinit bayrağını CIL sınıf tanımına eklerler. Derleyiciler ayrıca statik başlatma kodunu içeren özel bir statik oluşturucu da ekler. Bu özel statik oluşturucunun, türdeki statik alanlarına erişimden ö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.