Aracılığıyla paylaş


Stackalloc için koleksiyon ifadesi kullanma (IDE0302)

Mülk Değer
Kural Kimliği IDE0302
Başlık Stackalloc için koleksiyon ifadesini kullanma
Kategori Üslup
Altkategori Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# 12+
Seçenekleri dotnet_style_prefer_collection_expression

Genel bakış

Bu kural, diziler yerine aramasını aramak dışında stackalloc için koleksiyon ifadesi kullanmaya benzer. IDE0300 gibi, kodu bir koleksiyon ifadesikullanacak şekilde dönüştürmeyi sunar. Örneğin, stackalloc int[] { ... } ve stackalloc [] { ... }, [...]olarak basitleştirilir.

Uyarı

Bu kural yalnızca değerlerin yığında korunabildiği .NET 8 ve sonraki sürümlerinde kullanılabilir.

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ülk 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.

when_types_loosely_match değeri IDE0302 kuralına uygulanmaz, ancak birden fazla kuralın paylaştığı dotnet_style_prefer_collection_expression seçeneğinin eksiksiz olması için burada listelenmiştir. Varsayılan değer fiilen true.

Örnek

// Code with violations.
ReadOnlySpan<int> x = stackalloc int[] { 1, 2, 3 };

// Fixed code.
ReadOnlySpan<int> x = [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 IDE0302
// The code that's violating the rule is on this line.
#pragma warning restore IDE0302

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0302.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.