Compartir a través de


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

Otros recursos

Advertencias de globalización