CA1309:使用序号 StringComparison
类型名 |
UseOrdinalStringComparison |
CheckId |
CA1309 |
类别 |
Microsoft.Globalization |
是否重大更改 |
非重大更改 |
原因
非语义的字符串比较运算不会将 StringComparison 参数设置为 Ordinal 或 OrdinalIgnoreCase。
规则说明
许多字符串运算(其中最重要的是 String.Compare 和 String.Equals 方法)现在都提供接受 StringComparision 枚举值作为参数的重载。
当您指定 StringComparison.Ordinal 或 StringComparison.OrdinalIgnoreCase 时,字符串比较将是非语义的。 也就是说,在进行比较判断时会忽略特定于自然语言的功能。 这意味着,作出的判断基于简单的字节比较,并且忽略大小写或按区域性参数化的等值表。 因此,通过将参数显式设置为 StringComparison.Ordinal 或 StringComparison.OrdinalIgnoreCase,通常可以提高代码的速度、正确性和可靠性。
如何解决冲突
若要解决与此规则的冲突,请将字符串比较方法更改为接受 System.StringComparison 枚举作为参数的重载,并指定 Ordinal 或 OrdinalIgnoreCase。 例如,将 String.Compare(str1, str2) 更改为 String.Compare(str1, str2, StringComparison.Ordinal)。
何时禁止显示警告
如果库或应用程序面向有限的本地用户或者应该使用当前区域性的语义时,可以安全地禁止显示此规则发出的警告。