CA1847: Tek karakterli String.Contains(dize) yerine String.Contains(char) kullanın

Özellik Değer
Kural Kimliği CA1847
Başlık Tek karakterli String.Contains(dize) yerine String.Contains(char) kullanın
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

String.Contains(string) kullanılabilir olduğunda String.Contains(char) kullanılır.

Kural açıklaması

Tek bir karakter ararken, String.Contains(char) 'den String.Contains(string)daha iyi performans sunar.

İhlalleri düzeltme

Genel olarak kural, string değişmez değeri yerine char değişmez değeri kullanılarak düzeltilir.

public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains("I");
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I")
End Function

Bu kod bunun yerine bir karakter değişmez değeri kullanacak şekilde değiştirilebilir.

public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains('I');
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I"c)
End Function

Uyarıların ne zaman bastırılması gerekiyor?

Söz konusu arama çağrısının performans etkisi konusunda endişeniz yoksa, bu kuralın ihlalini bastırın.

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 CA1847
// The code that's violating the rule is on this line.
#pragma warning restore CA1847

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.CA1847.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Ayrıca bkz.