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 |
CA1875 |
| Başlık |
Regex.Count komutunu kullanma |
| Kategori | Performans |
| Düzeltme kırılgan mı yoksa sağlam mı | Non-breaking |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
Nedeni
Count özelliği MatchCollectionRegex.Matches, eşleşme sayısını almak için kullanılır.
Kural açıklaması
Regex.Count , değerinden Regex.Matches(...).Countdaha basit ve daha hızlıdır.
Count() yöntemi, tam MatchCollectiondeğeri gerçekleşmeden eşleşmeleri saymak için iyileştirilmiştir. Çağırma Matches() ve ardından erişim .Count , performansı etkileyebilecek gereksiz işler yapar.
İhlalleri düzeltme
için çağrılarını Regex.Matches(...).Count ile Regex.Count(...)değiştirin.
Bu dönüşümü otomatik olarak gerçekleştiren bir kod düzeltmesi kullanılabilir.
Example
Aşağıdaki kod parçacığı CA1875 ihlalini gösterir:
using System.Text.RegularExpressions;
class Example
{
public int CountWords(string text)
{
// Violation
return Regex.Matches(text, @"\b\w+\b").Count;
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function CountWords(text As String) As Integer
' Violation
Return Regex.Matches(text, "\b\w+\b").Count
End Function
End Class
Aşağıdaki kod parçacığı ihlali düzeltir:
using System.Text.RegularExpressions;
class Example
{
public int CountWords(string text)
{
// Fixed
return Regex.Count(text, @"\b\w+\b");
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function CountWords(text As String) As Integer
' Fixed
Return Regex.Count(text, "\b\w+\b")
End Function
End Class
Uyarıların ne zaman bastırılması gerekiyor?
Performans önemli değilse veya içermeyen bir .NET sürümünü (.NET Regex.Count 7'den önce) hedeflediyseniz, bu kuraldan gelen bir uyarıyı gizlemeniz 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 CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, none önem derecesini olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.