CA1865-CA1867:使用 'string。Method(char)' 而不是 'string。具有單一 char 的字串方法(string)'

屬性
規則識別碼 CA1865-CA1867
標題 使用 'string。Method(char)' 而不是 'string。具有單一 char 的字串方法(string)'
類別 效能
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 CA1865 - 建議
CA1866 — 建議
CA1867 — 否

原因

string.Method(string) 在可用時 string.Method(char) 會使用。

這些規則的目標方法 string

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

下表摘要說明每個相關規則識別碼的條件。

診斷識別碼 描述 程式碼修正可用
CA1865 使用程式碼修正自動執行安全轉換時適用。 Yes
CA1866 沒有指定的比較時適用。 No
CA1867 適用于其他兩個規則未涵蓋的任何其他字串比較。 No

CA1867 預設為停用。

檔案描述

採用 char 參數的多載效能優於採用字串參數的多載。

如何修正違規

若要修正違規,請使用 char 參數多載,而不是字串參數多載。

請考慮下列範例:

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

此程式碼可以變更為傳遞 'I' 至 , StartsWith 而不是字串 "I"

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

隱藏警告的時機

如果您不擔心使用字串呼叫方法的效能影響,請隱藏此規則的違規。

隱藏警告

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

#pragma warning disable CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867

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

[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

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

另請參閱