分享方式:


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

屬性
規則識別碼 CA1847
職稱 使用 String.Contains(char) 而非 String.Contains(string) 搭配單一字元
類別 效能
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 建議

原因

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

檔案描述

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

如何修正違規

一般而言,規則只是使用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")
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

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

另請參閱