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 |
IDE0301 |
| Başlık | Boş ifadeler yerine koleksiyon ifadesi kullanın |
| 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, Array.Empty<T>() (boş koleksiyon döndüren bir yöntem çağrısı) veya ImmutableArray<T>.Empty (boş koleksiyon döndüren bir özellik) gibi bir kod arar ve bunu koleksiyon ifadesiyle değiştirmeyi teklif eder.
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.
Örnek
// Code with violations.
int[] i = Array.Empty<int>();
IEnumerable<int> j = Array.Empty<int>();
ReadOnlySpan<int> span = ReadOnlySpan<int>.Empty;
// Fixed code.
int[] i = [];
IEnumerable<int> j = [];
ReadOnlySpan<int> span = [];
Aşağıdaki kod parçacığında özel türe sahip bir örnek gösterilmektedir.
public class Program
{
public static void Main()
{
// IDE0301 violation.
MyList<int> x = MyList<int>.Empty;
// IDE0301 fixed code.
MyList<int> x = [];
}
}
class MyList<T> : IEnumerable<T>
{
public static MyList<T> Empty { get; }
public IEnumerator<T> GetEnumerator() => default;
IEnumerator IEnumerable.GetEnumerator() => default;
}
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 IDE0301
// The code that's violating the rule is on this line.
#pragma warning restore IDE0301
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.IDE0301.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