字符串比较?

时间:2010-09-27 03:59:40

标签: c# string

  

可能重复:
  Differences in string compare methods in C#

这些方法之间有什么区别吗?

string.Compare(s1, s2) == 0
s1.CompareTo(s2) == 0
s1.Equals(s2)
s1 == s2

我应该使用哪一个?

1 个答案:

答案 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。