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ü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 derecesini
[*.{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.
- Dizi (IDE0300) için koleksiyon ifadesini kullanma
- Boş (IDE0301) için koleksiyon ifadesini kullanma
- Stackalloc (IDE0302) için koleksiyon ifadesini kullanma
-
(IDE0303) için
Create()koleksiyon ifadesini kullanma - Oluşturucu (IDE0304) için koleksiyon ifadesini kullanma
- Koleksiyon ifadesini daha akıcı hale getirmek için kullanın (IDE0305)