CA1847:使用 String.Contains(char) 而非 String.Contains(string) 搭配單一字元

屬性
規則識別碼 CA1847
職稱 建議使用 String.Contains(字符)而非 String.Contains(字串)來處理單一字元
類別 效能
修正是造成中斷還是不中斷 不中斷
在 .NET 10 中預設啟用 作為建議
適用語言 C# 與 Visual Basic

原因

String.Contains(char) 可用時會使用 String.Contains(string)

規則描述

搜尋單一字元時, String.Contains(char) 提供比 更好的 String.Contains(string)效能。

如何修正違規

一般來說,該規則可以通過使用字元常值而不是字串常值來簡單地修正。

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

此程式代碼可以變更為改用char常值。

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

隱藏警告的時機

如果您不擔心搜尋調用的效能影響,請抑制此規則的違規。

隱藏警告

如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。

#pragma warning disable CA1847
// The code that's violating the rule is on this line.
#pragma warning restore CA1847

若要停用檔案、資料夾或專案的規則,請在組態檔中將其嚴重性設為 none

[*.{cs,vb}]
dotnet_diagnostic.CA1847.severity = none

如需詳細資訊,請參閱 如何隱藏程式代碼分析警告

另請參閱