CA1309: Utilizar StringComparison ordinal
Nombre de tipo |
UseOrdinalStringComparison |
Identificador de comprobación |
CA1309 |
Categoría |
Microsoft.Globalization |
Cambio problemático |
Poco problemático |
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 cadenas y, lo que es más importante, los métodos StringCompare() y StringEquals(), proporcionan ahora una sobrecarga que acepta un valor de enumeración StringComparision como parámetro.
Si especifica StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, la comparación de cadenas será no lingüística. Es decir, al tomar decisiones de comparación, se omiten las características específicas del lenguaje natural. Esto significa que las decisiones se basan en comparaciones de bytes simples y no distinguen entre mayúsculas y minúsculas, u omiten las tablas de equivalencia que están parametrizadas por referencia cultural. Por tanto, si establece explícitamente el parámetro en StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, su código será más rápido, más exacto y más confiable.
Cómo corregir infracciones
Para corregir una infracción a esta regla, cambie el método de comparación de cadenas por una sobrecarga que acepte la enumeración System.StringComparison como parámetro, y especifique Ordinal u OrdinalIgnoreCase. Por ejemplo, cambie String.Compare(str1, str2) a String.Compare(str1, str2, StringComparison.Ordinal).
Cuándo suprimir advertencias
Es seguro suprimir una advertencia de esta regla cuando la biblioteca o la aplicación está diseñada para una audiencia local limitada o cuando se debe utilizar las semántica de la referencia cultural actual.
Vea también
Referencia
CA1307: Especificar StringComparison