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.
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.

Consulte también