CA1847: Dize kullanın. Dize yerine Contains(char). Tek karakterli contains(string)

Özellik Değer
Kural Kimliği CA1847
Başlık Dizeyi kullanın. Dize yerine Contains(char). Tek karakterli contains(string)
Kategori Performans
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Öneri olarak

Neden

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

Kural açıklaması

Tek bir karakter ararken, kullanmak string.Contains(char) yerine daha string.Contains(string)iyi bir performans sunar.

İhlalleri düzeltme

Genel olarak kural, dize değişmez değeri yerine karakter 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.