Koleksiyon başlatıcıları veya ifadeleri kullanma (IDE0028)

Özellik Değer
Kural Kimliği IDE0028
Başlık Koleksiyon başlatıcılarını kullanma
Kategori Stil
Alt kategori Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# ve Visual Basic
Seçenekler dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Genel bakış

Bu stil kuralı, koleksiyon başlatıcılarının ve C# 12 veya sonraki bir sürümünü kullanıyorsanız koleksiyon başlatma için koleksiyon ifadelerinin kullanımıyla ilgilidir.

.NET 8 (C# 12) ve sonraki sürümlerde, seçeneğiniz dotnet_style_prefer_collection_expression olarak ayarlandıysa true, Visual Studio'daki kod düzeltici koleksiyon başlatma kodunuzu bir koleksiyon ifadesi (List<int> list = [1, 2, 3]; ) kullanacak şekilde dönüştürür. Visual Basic'te ve .NET 7 (C# 11) ve önceki sürümlerde kod düzeltici kodunuzu koleksiyon başlatıcısı (List<int> list = new List<int> { 1, 2, 3 }; ) kullanacak şekilde dönüştürür.

Not

Visual Studio'da kod düzelticisini kullanırsanız, sunduğu değişiklik bazı durumlarda farklı semantiklere sahip olabilir. Örneğin, int[] x = new int[] { } biraz farklı semantiği olan ile int[] x = [];değiştirilir; derleyici yeni bir örnek oluşturmak yerine için x tek bir değer kullanır.

Seçenekler

Koleksiyonları başlatırken koleksiyon başlatıcılarının ve koleksiyon ifadelerinin tercih edilip edilmeyeceğini belirtmek için bu kuralla ilişkili seçeneklerin değerlerini ayarlayın.

Seçenekleri yapılandırma hakkında daha fazla bilgi için bkz . Seçenek biçimi.

dotnet_style_collection_initializer

Özellik Değer Açıklama
Seçenek adı dotnet_style_collection_initializer
Seçenek değerleri true Koleksiyon başlatıcılarını kullanmayı tercih edin.
false Koleksiyon başlatıcılarını tercih etmeyin.
Varsayılan seçenek değeri true

dotnet_style_prefer_collection_expression (yalnızca C#

Özellik Değer Açıklama
Seçenek adı dotnet_style_prefer_collection_expression
Seçenek değerleri true Koleksiyon ifadelerini kullanmayı tercih edin.
false Koleksiyon ifadelerini tercih etmeyin.
Varsayılan seçenek değeri true

Örnekler

// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none

Kod stili kuralların tümünü devre dışı bırakmak için, kategorinin Stylenoneönem derecesini yapılandırma dosyasında olarak ayarlayın.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Ayrıca bkz.