CA1865-CA1867:使用 'string。Method(char)' 而不是 'string。具有單一 char 的字串方法(string)'
屬性 | 值 |
---|---|
規則識別碼 | CA1865-CA1867 |
職稱 | 使用 『string。Method(char)' 而不是 'string。具有單一 char 的字串方法(string)' |
類別 | 效能 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 9 中啟用 | 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
[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。