2009-08-31 10 views
2

當我比較含有正/負號,例如字符串:String.CompareTo如何工作?

int res1 = "-1".CompareTo("1"); 
int res2 = "-1".CompareTo("2"); 

RES1等於1
RES2等於-1。

String.CompareTo如何工作?這將意味着它是順序是「2 -1 1」 ......

+1

C#不能像某些腳本語言那樣將這些值作爲數字進行比較。如果您真的想比較數值,則需要將它們轉換爲數字類型,如Int32等。 – ConsultUtah

+0

不是一個選項。我正在排序字符串。那些字符串恰好在最後(相同的開始處)有一個數字,排序順序很奇怪。 – Kevin

回答

8

MSDN

某些非字母數字字符 可能有一個分配給他們 特殊的權重。例如,連字符(「 - 」) 可能會有一個非常小的權重 分配給它,以便「coop」和 「合作社」在 排序列表中彼此相鄰。

編輯:忘了提及,這是CompareOptions枚舉使用string.Compare

+0

這是迄今爲止最好的答案,因爲它解決了實際的怪異問題,而不是假設某件事情,並聲稱這種行爲從該假設中是有意義的。 – Sean