नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
| Property | Value |
|---|---|
| Rule ID | CA1865-CA1867 |
| Title | Use 'string.Method(char)' instead of 'string.Method(string)' for string with single char |
| Category | Performance |
| Fix is breaking or non-breaking | Non-breaking |
| Enabled by default in .NET 10 | CA1865—As suggestion CA1866—As suggestion CA1867—No |
Cause
string.Method(string) is used when string.Method(char) was available.
The target methods on string for these rules:
StartsWithEndsWithIndexOfLastIndexOf
The following table summarizes the conditions for each of the related rule IDs.
| Diagnostic ID | Description | Code fix available? |
|---|---|---|
| CA1865 | Applies when a safe transformation can be performed automatically with a code fix. | Yes |
| CA1866 | Applies when there's no specified comparison. | No |
| CA1867 | Applies for any other string comparison not covered by the other two rules. | No |
CA1867 is disabled by default.
Rule description
The overload that takes a char parameter performs better than the overload that takes a string parameter.
How to fix violations
To fix a violation, use the char parameter overload instead of the string parameter overload.
Consider the following example:
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
This code can be changed to pass 'I' to StartsWith instead of the string "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
When to suppress warnings
Suppress a violation of this rule if you're not concerned about the performance impact of calling the method with a string.
Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
#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
To disable the rule for a file, folder, or project, set its severity to none in the configuration file.
[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
For more information, see How to suppress code analysis warnings.