Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| 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.
- Dizi (IDE0300) için koleksiyon ifadesini kullanma