Aracılığıyla paylaş


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

Özellik Değer
Kural Kimliği CA2244
Başlık Dizine eklenmiş öğe başlatmalarını yineleme
Kategori Kullanım
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 9'da varsayılan olarak etkin Öneri olarak

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+ tuşuna (nokta) 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.