CA2244: Dizine alınan öğe başlatmalarını yinelemeyin

Özellik Değer
Kural Kimliği CA2244
Başlık Dizine eklenmiş elemanların başlatmalarını tekrarlamayın
Kategori Kullanım
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Öneri olarak
Geçerli diller C# ve Visual Basic

Neden

Nesne başlatıcıda aynı sabit dizine sahip birden fazla dizinlenmiş öğe başlatıcısı vardır. Son başlatıcı dışında tümü yedeklidir.

Kural açıklaması

Nesne başlatıcılar , oluşturma zamanında bir oluşturucuyu ve ardından atama deyimleri satırlarını çağırmak zorunda kalmadan nesnenin erişilebilir alanlarına veya özelliklerine değer atamanıza olanak sağlar.

Nesne başlatıcılarındaki dizine alınan öğe başlatıcıların benzersiz öğeleri başlatması gerekir. Yinelenen dizin, önceki bir öğe başlatmanın üzerine yazar.

İhlalleri düzeltme

İhlalleri düzeltmek için, sonraki öğe başlatıcıların herhangi biri tarafından üzerine yazılan tüm yedekli dizinli öğe başlatıcılarını kaldırın. Örneğin, aşağıdaki kod parçacığı kuralın ihlalini ve birkaç olası düzeltmeyi gösterir:

using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1, // CA2244
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1,
            [2] = 2
        };
    }
}

İpucu

Visual Studio'da bu kural için bir kod düzeltmesi kullanılabilir. Bunu kullanmak için imleci ihlalin üzerine getirin ve Ctrl+. (nokta) tuşuna basın. Sunulan seçenekler listesinden Yedekli öğe başlatıcısını kaldır'ı seçin.

CA2244 için kod düzeltmesi - Yedekli öğe başlatıcısını kaldırma

Uyarıların ne zaman bastırılması gerekiyor?

Bu kural için ihlalleri bastırmayın.

Ayrıca bkz.