CA1865-CA1867: 文字列が 1 文字の場合は、'string.Method(string)' の代わりに 'string.Method(char)' を使用します
プロパティ | 値 |
---|---|
ルール ID | CA1865-CA1867 |
Title | 文字列が 1 文字の場合は、'string.Method(string)' の代わりに 'string.Method(char)' を使用します |
[カテゴリ] | パフォーマンス |
修正が中断ありか中断なしか | なし |
.NET 8 では既定で有効 | CA1865 - 提案として CA1866 - 提案として CA1867 - なし |
原因
string.Method(char)
が利用できたときに string.Method(string)
が利用されています。
これらのルールの string
上のターゲット メソッドは以下のとおりです。
StartsWith
EndsWith
IndexOf
LastIndexOf
以下の表は、関連する各ルール ID の条件をまとめたものです。
診断 ID | 説明 | クイック修正プログラムが入手可能です |
---|---|---|
CA1865 | コード修正プログラムを使用して安全な変換が自動的に実行できる場合に適用されます。 | はい |
CA1866 | 指定された比較がない場合に適用されます。 | いいえ |
CA1867 | 他の 2 つのルールでカバーされていないその他の文字列比較に適用されます。 | いいえ |
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"
の代わりに 'I'
を StartsWith
に渡すように変更できます。
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
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連規則
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET