2
是否有這些方法之間有什麼區別?
string.Compare(s1, s2) == 0
s1.CompareTo(s2) == 0
s1.Equals(s2)
s1 == s2
我應該使用哪一個?
是否有這些方法之間有什麼區別?
string.Compare(s1, s2) == 0
s1.CompareTo(s2) == 0
s1.Equals(s2)
s1 == s2
我應該使用哪一個?
從反射器:
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。