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 | IDE0300 |
| Başlık | Dizi için koleksiyon ifadesini kullanma |
| Kategori | Üslup |
| alt kategori | Dil kuralları (ifade düzeyi tercihleri) |
| Geçerli diller | C# 12+ |
| Seçenekleri | dotnet_style_prefer_collection_expression |
Genel bakış
Bu kural, diziyi başlatmak için koleksiyon ifadesinin kullanılabildiği yerleri işaretler. Örneğin, bu kural new C[] { ... }, new[] { ... }ve C[] c = { ... } gibi kodları koleksiyon ifadesi formuna ([...]) basitleştirmeyi sunar.
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.
Örneğin, IEnumerable<int> x = new int[] { 1, 2, 3 };varsa, özgün kodda bir dizi oluşturulur. Ancak yeni kodda (IEnumerable<int> x = [1, 2, 3];), bunun yerine derleyici tarafından sentezlenen bir iç tür oluşturulur.
is denetimi veya dönüştürme kullanıyorsanız bu farkı görebilirsiniz.
Örnek
// Code with violations.
int[] i = new int[] { 1, 2, 3 };
IEnumerable<int> j = new int[] { 1, 2, 3 };
// Fixed code.
int[] i = [1, 2, 3];
IEnumerable<int> j = [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 IDE0300
// The code that's violating the rule is on this line.
#pragma warning restore IDE0300
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.IDE0300.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.
- Koleksiyon İfadeleri
- Koleksiyon başlatıcılarını kullanma (IDE0028)