CompareInfo

本文提供了此 API 参考文档的补充说明。

用于比较和排序数据的约定因区域性而异。 例如,排序顺序可能基于拼音或基于字符的可视表示形式。 在东亚语言中,按文字的笔画和部首对字符进行排序。 排序也取决于字母表使用的排序语言和区域性。 例如,丹麦语有一个“Æ”字符,它在字母表中排在“Z”之后。 此外,比较可以区分大小写或不区分大小写,并且大小写规则也可能因区域性而异。 CompareInfo 类负责维护此区分区域性的字符串比较数据并执行区分区域性的字符串运算。

通常,您不必直接实例化 CompareInfo 对象,因为所有非序号字符串比较运算会隐式使用一个此对象,包括对 String.Compare 方法的调用。 但是,若要检索 CompareInfo 对象,您可通过下列方法之一执行此操作:

已忽略的搜索值

字符集包括可忽略字符,在执行语言性的或区分区域性的比较时该字符不被考虑。 当比较方法(如 IndexOfLastIndexOf)执行区分区域性的比较时,它们不会考虑此类字符。 可忽略的字符包括:

  • String.Empty。 区分区域性的比较方法将始终在要搜索的字符串的开头(索引为零)查找空字符串。

  • 字符或由多个字符和运算中未考虑的码位(因为比较选项)构成的字符串,具体而言,CompareOptions.IgnoreNonSpaceCompareOptions.IgnoreSymbols 选项生成忽略符号和非间距组合字符的搜索。

  • 带没有语义的码位的字符串。 例如,始终在区分区域性的字符串比较中忽略软连字符 (U+00AD)。

安全注意事项

如果安全决策取决于字符串比较或大小写更改,则您应使用 InvariantCulture 属性来确保行为一致,无论操作系统的区域性设置如何。

注意

如果可能,应使用具有类型 CompareOptions 的参数的字符串比较方法来指定预期的比较类型。 作为一般规则,对于在用户界面中显示的字符串比较,请使用语言选项(使用当前文化)并指定 OrdinalOrdinalIgnoreCase 用于安全比较。