关于字符串比较问题的很好的解释和实践可以在文章中找到:在Microsoft . net 2.0中使用字符串的新建议和在. net框架中使用字符串的最佳实践。
上述每一种方法(或其他方法)都有特定的目的。它们之间的关键区别是默认情况下使用哪种类型的StringComparison Enumeration。有以下几种选择:
CurrentCulture
CurrentCultureIgnoreCase
InvariantCulture
InvariantCultureIgnoreCase
序数
OrdinalIgnoreCase
以上每一种比较类型都针对不同的用例:
Ordinal
Case-sensitive internal identifiers
Case-sensitive identifiers in standards like XML and HTTP
Case-sensitive security-related settings
OrdinalIgnoreCase
Case-insensitive internal identifiers
Case-insensitive identifiers in standards like XML and HTTP
File paths (on Microsoft Windows)
Registry keys/values
Environment variables
Resource identifiers (handle names, for example)
Case insensitive security related settings
InvariantCulture or InvariantCultureIgnoreCase
Some persisted linguistically-relevant data
Display of linguistic data requiring a fixed sort order
CurrentCulture or CurrentCultureIgnoreCase
Data displayed to the user
Most user input
注意,StringComparison枚举和字符串比较方法的重载从。net 2.0开始就存在了。
字符串。CompareTo方法
实际上是IComparable的类型安全实现。CompareTo方法。默认解释:CurrentCulture。
用法:
CompareTo方法主要用于排序或字母排序操作
Thus
实现IComparable接口必须使用此方法
字符串。比较的方法
String类的静态成员,有很多重载。默认解释:CurrentCulture。
只要可能,应该调用包含StringComparison参数的Compare方法的重载。
字符串。=方法
从Object类重写,并为类型安全重载。默认解释:序数。
注意:
String类的相等方法包括静态Equals、静态操作符==和实例方法Equals。
StringComparer 类
还有另一种处理字符串比较的方法,尤其是用于排序的方法:
可以使用StringComparer类创建特定于类型的比较,以便对泛型集合中的元素进行排序。Hashtable、Dictionary、SortedList和SortedList等类使用StringComparer类进行排序。