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.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1829 |
| Başlık | Enumerable.Count metodu yerine Length/Count özelliğini kullan |
| Kategori | Performans |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
Count LINQ yöntemi eşdeğer, daha verimli Length veya Count özelliği destekleyen bir tür üzerinde kullanılmıştır.
Kural açıklaması
Bu kural, eşdeğer ancak daha verimli Length veya Count özellikleri içeren tür koleksiyonlarındaki Count LINQ yöntemi çağrılarını aynı verileri almak için işaretler.
Length veya Count özelliği koleksiyonu numaralandırmaz, bu nedenle daha verimlidir.
Bu kural, Length özelliğine sahip aşağıdaki koleksiyon türlerindeki Count çağrılarını işaretler:
Bu kural, Count özelliğiyle aşağıdaki koleksiyon türlerindeki Count çağrılarını uyarır:
- System.Collections.ICollection
- System.Collections.Generic.ICollection<T>
- System.Collections.Generic.IReadOnlyCollection<T>
Çözümlenen koleksiyon türleri gelecekte daha fazla vakayı kapsayacak şekilde uzatılabilir.
İhlalleri düzeltme
Bir ihlali düzeltmek için Count yöntem çağrısını `Length` veya `Count` özellik erişimi kullanımıyla değiştirin. Örneğin, aşağıdaki iki kod parçacığı kuralın ihlalini ve nasıl düzeltileceğini gösterir:
using System.Collections.Generic;
using System.Linq;
class C
{
public int GetCount(int[] array)
=> array.Count();
public int GetCount(ICollection<int> collection)
=> collection.Count();
}
using System.Collections.Generic;
class C
{
public int GetCount(int[] array)
=> array.Length;
public int GetCount(ICollection<int> collection)
=> collection.Count;
}
İpucu
Visual Studio'da bu kural için bir kod düzeltmesi kullanılabilir. Bunu kullanmak için imleci ihlalin üzerine getirin ve Ctrl+. (nokta) tuşuna basın. Sunulan seçenekler listesinden "Count() yerine kullanılabilir olduğunda Uzunluk/Sayı özelliğini kullan" seçeneğini seçin.
Uyarıların ne zaman bastırılması gerekiyor?
Performans üzerinde gereksiz toplama numaralandırmasından kaynaklanan etki konusunda endişeniz yoksa, bu kuralın ihlalini bastırmak güvenlidir.
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 CA1829
// The code that's violating the rule is on this line.
#pragma warning restore CA1829
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1829.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
İlgili kurallar
- CA1826: Linq Enumerable yöntemi yerine özelliği kullanın
- CA1827: Any kullanılabilecekken Count/LongCount kullanmayın
- CA1828: AnyAsync kullanılabildiğinde CountAsync/LongCountAsync kullanmayın