Aracılığıyla paylaş


Yeni (IDE0306) için koleksiyon ifadesini kullanma

Mülkiyet Değer
Kural Kimliği IDE0306
Başlık Yeni bir nesne oluşturmak için koleksiyon ifadesini kullanın
Kategori Stil
alt kategorisi Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# 12+
Seçenekleri dotnet_style_prefer_collection_expression

Genel Bakış

Bu kural, bir spread öğesi () içeren ..newyerine bir liste başlatmak için kullanabildiği yerleri işaretler. Örneğin, bu kural new List<...>(x) gibi kodları [.. x] koleksiyon ifadesi formuna basitleştirmeyi önerir.

Seçenekler

Seçenekler, kuralın zorlamasını istediğiniz davranışı belirtir. Seçenekleri yapılandırma hakkında bilgi için bkz. Seçenek biçimi.

dotnet_stili_koleksiyon_ifadesini_tercih_et

Mülkiyet Değer Açıklama
Seçenek adı dotnet_stili_koleksiyon_ifadesini_tercih_et
Seçenek değerleri true | when_types_exactly_match Koleksiyon ifadelerini yalnızca türler tam olarak eşleştiğinde kullanmayı tercih eder, örneğin List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Türler gevşek bir şekilde eşleştiğinde bile koleksiyon ifadelerini kullanmayı tercih edin, örneğin IEnumerable<int> list = new List<int>() { 1, 2 };. Hedeflenen türün sağ taraftaki türle eşleşmesi veya şu türlerden biri olması gerekir: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Kuralı devre dışı bırakır.
varsayılan seçenek değeri when_types_loosely_match*

*Bu seçenek kullanıldığında kod düzeltmesi kodunuzun semantiğini değiştirebilir.

Örnek

// Code with violation.
List<int> l1 = new List<int>(Enumerable.Range(1, 10));
List<int> m1 = new List<int>(new[] { 1, 2, 3 });

// Fixed code.
List<int> l1 = [.. Enumerable.Range(1, 10)];
List<int> m1 = [.. new[] { 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 IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için önem derecesiniyapılandırma dosyasında olarak ayarlayın.

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

Tüm kod stili kurallarını devre dışı bırakmak için kategori Style önem derecesini noneyapı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.