Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
| Propiedad | Valor |
|---|---|
| Identificador de la regla | CA1309 |
| Título | Usar la comparación de cadenas ordinal |
| Categoría | Globalización |
| La corrección interrumpe o no interrumpe | Sin interrupción |
| Habilitado de forma predeterminada en .NET 10 | No |
| Idiomas aplicables | C# y Visual Basic |
Causa
Una operación no lingüística de comparación de cadenas no establece el parámetro StringComparison en Ordinal ni en OrdinalIgnoreCase.
Descripción de la regla
Muchas operaciones de cadena, especialmente los métodos System.String.Compare y System.String.Equals, ahora proporcionan una sobrecarga que acepta un valor de enumeración System.StringComparison como parámetro.
Al especificar StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, la comparación de cadenas no es lingüística. Es decir, las características que son específicas del lenguaje natural se omiten cuando se toman decisiones de comparación. Ignorar las características del lenguaje natural significa que las decisiones se basan en simples comparaciones de bytes y no en la distinción de mayúsculas y minúsculas o en tablas de equivalencia que están parametrizadas por cultura. Como resultado, si se establece explícitamente el parámetro en StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, el código será más rápido y ganará en precisión y confiabilidad.
Cómo corregir infracciones
Para corregir una infracción de esta regla, cambie el método de comparación de cadenas a una sobrecarga que acepte la enumeración System.StringComparison como parámetro y especifique Ordinal u OrdinalIgnoreCase. Por ejemplo, cambia String.Compare(str1, str2) a String.Compare(str1, str2, StringComparison.Ordinal).
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla cuando la biblioteca o aplicación está diseñada para un público local limitado, o cuando se deba utilizar la semántica de la cultura actual.
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 CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
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.CA1309.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.