CA1860: 'Enumerable.Any()' uzantı yöntemini kullanmaktan kaçının
Özellik | Değer |
---|---|
Kural Kimliği | CA1860 |
Başlık | 'Enumerable.Any()' uzantı yöntemini kullanmaktan kaçının |
Kategori | Performans |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Öneri olarak |
Neden
Enumerable.Any, Count
veya IsEmpty
özelliği olan bir Length
tür üzerinde çağrılır.
Kural açıklaması
Bir koleksiyon türünün herhangi bir öğeye sahip olup olmadığını belirlemek için , Count
veya IsEmpty
(mümkünse) özelliklerini kullanmak Length
yöntemi çağırmaktan Enumerable.Any daha verimli ve daha nettir.
Any()
, bir uzantı yöntemidir ve dil tümleşik sorgusunu (LINQ) kullanır. Koleksiyonun kendi özelliklerine güvenmek daha verimlidir ve amacını da açıklar.
Not
Bu kural CA1827'ye benzer: Any() kullanılabilirken Count()/LongCount() kullanmayın. Ancak bu kural Linq Count()
yöntemine uygulanırken, bu kural özelliğinin Count
kullanılmasını önerir.
İhlalleri düzeltme
Any() çağrısını koleksiyonun Length
, Count
veya IsEmpty
özelliğine yapılan bir çağrıyla değiştirin.
Örnek
Aşağıdaki kod parçacığı CA1860 ihlalini gösterir:
bool HasElements(string[] strings)
{
return strings.Any();
}
Function HasElements(strings As String()) As Boolean
Return strings.Any()
End Function
Aşağıdaki kod parçacığı ihlali düzeltir:
bool HasElements(string[] strings)
{
return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
Return strings.Length > 0
End Function
Uyarıların ne zaman bastırılması gerekiyor?
Performansla ilgili bir sorun yoksa bu uyarıyı 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 CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1860.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.