CA2207: Değer türü statik alanları satır içi olarak başlatın

Ö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.

CA1810: Başvuru türü statik alanları yerinde başlatma