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 8'de 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
        };
    }
}

Bahşiş

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.

Code fix for CA2244 - Remove redundant element initializer

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

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

Ayrıca bkz.