CA1865-CA1867: Uso de 'string.Method(char)' en lugar de 'string.Method(string)' para cadenas con un solo carácter
Propiedad | Value |
---|---|
Identificador de la regla | CA1865-CA1867 |
Título | Uso de 'string.Method(char)' en lugar de 'string.Method(string)' para cadenas con un solo carácter |
Categoría | Rendimiento |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | CA1865: como sugerencia CA1866: como sugerencia CA1867—No |
Causa
string.Method(string)
se usaba cuando string.Method(char)
estaba disponible.
Los métodos de destino de string
para estas reglas:
StartsWith
EndsWith
IndexOf
LastIndexOf
En la tabla siguiente se resumen las condiciones de cada uno de los identificadores de regla relacionados.
Id. de diagnóstico | Descripción | Corrección de código disponible |
---|---|---|
CA1865 | Se aplica cuando una transformación segura se puede realizar automáticamente con una corrección de código. | Sí |
CA1866 | Se aplica cuando no hay ninguna comparación especificada. | No |
CA1867 | Se aplica a cualquier otra comparación de cadenas no cubierta por las otras dos reglas. | No |
CA1867 está deshabilitado de forma predeterminada.
Descripción de la regla
La sobrecarga que toma un parámetro char funciona mejor que la sobrecarga que toma un parámetro de cadena.
Cómo corregir infracciones
Para corregir una infracción, use la sobrecarga del parámetro char en lugar de la sobrecarga de parámetros de cadena.
Considere el ejemplo siguiente:
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
Este código se puede cambiar para pasar 'I'
a StartsWith
en lugar de la cadena "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
Cuándo suprimir las advertencias
Suprima una infracción de esta regla si no le preocupa el impacto en el rendimiento de llamar al método con una cadena.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#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
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.