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.
Uyarıların ne zaman bastırılması gerekiyor?
Bu kural için ihlalleri bastırmayın.