可能是重复问题:
C#中字符串比较方法的区别
.NET中有许多字符串比较方法,我只想确认哪一个在性能方面最好使用。
string.Equals()
string.Compare()
string.CompareTo()
string.CompareOrdinal()
string.ReferenceEquals()
if (str1 == str2)
可能是重复问题:
C#中字符串比较方法的区别
.NET中有许多字符串比较方法,我只想确认哪一个在性能方面最好使用。
string.Equals()
string.Compare()
string.CompareTo()
string.CompareOrdinal()
string.ReferenceEquals()
if (str1 == str2)
摘自 MSDN
确定此实例和一个指定的对象(该对象也必须是 String 对象)是否具有相同的值。
string.Compare 比较两个指定的 String 对象,并返回一个表示它们在排序顺序中的相对位置的整数。
string.CompareTo 将此实例与指定对象或 String 进行比较,并返回一个整数,指示此实例是在排序顺序中位于指定对象或 String 之前、之后还是与其处于同一位置。
string.CompareOrdinal 按照每个字符串中对应字符的数字值评估比较两个指定的 String 对象。
字符串相等运算符 预定义的字符串相等运算符包括:
bool operator ==(string x, string y); bool operator !=(string x, string y); 当以下条件之一为真时,两个字符串值被视为相等:
两个值均为 null。 两个值都是非 null 引用,并且它们是在每个字符位置上具有相同的长度和相同的字符的字符串实例。 字符串相等运算符比较字符串值而不是字符串引用。当两个单独的字符串实例包含完全相同的字符序列时,字符串的值是相等的,但引用是不同的。如第 7.9.6 节所述,引用类型相等运算符可用于比较字符串引用而不是字符串值。
a.Equals(b)
这个方法不是完整的答案,因为如果a
是空值null
,它会抛出NullReferenceException
异常,而a == b
则不会。请谨慎使用。 - Jackson Pope