这些方法之间有什么区别吗?
string.Compare(s1, s2) == 0
s1.CompareTo(s2) == 0
s1.Equals(s2)
s1 == s2
我应该使用哪一个?
答案 0 :(得分:3)
来自反射器:
public static int Compare(string strA, string strB)
{
return CultureInfo.CurrentCulture.CompareInfo.Compare(strA, strB, CompareOptions.None);
}
public int CompareTo(string strB)
{
if (strB == null)
{
return 1;
}
return CultureInfo.CurrentCulture.CompareInfo.Compare(this, strB, CompareOptions.None);
}
所以CompareTo
有一个额外的参考检查,而不是Compare
。
public static bool operator ==(string a, string b)
{
return Equals(a, b);
}
因此==
与Equals
完全相同。
两个Compare
和两个Equals
之间的差异是,您可以将CompareOptions
参数传递给Compare
,并返回0/1 / -1。虽然Equals
没有收到CompareOptions
参数,但它只能告诉你TRUE / FALSE。