这个问题已经在这里有了答案:
9年前关闭。
在.NET中,有许多字符串比较方法,考虑到性能,我只想确认哪种方法最适合使用。
string.Equals()
string.Compare()
string.CompareTo()
string.CompareOrdinal()
string.ReferenceEquals()
if (str1 == str2)
最佳答案
从msdn翻录
string.Equals
确定此实例和指定的对象(也必须是String对象)是否具有相同的值。
string.Compare
比较两个指定的String对象,并返回一个整数,该整数指示它们在排序顺序中的相对位置。
string.CompareTo
将此实例与指定的对象或String进行比较,并返回一个整数,该整数指示此实例是在先后,在后还是在排序时出现在与指定对象或String相同的位置。
string.CompareOrdinal
通过评估每个字符串中相应的Char对象的数值,比较两个指定的String对象。
String equality operators
预定义的字符串相等运算符为:
bool 运算符==(字符串x,字符串y);
bool 运算符!=(字符串x,字符串y);
如果满足以下条件之一,则认为两个字符串值相等:
两个值都为空。
这两个值都是对字符串实例的非null引用,这些字符串实例在每个字符位置具有相同的长度和相同的字符。
字符串相等运算符比较字符串值而不是字符串引用。当两个单独的字符串实例包含完全相同的字符序列时,字符串的值相等,但是引用不同。如第7.9.6节所述,引用类型相等运算符可用于比较字符串引用而不是字符串值。