關於.NET裡String.Compare與C++的不同,請高人解釋下為什麼這樣?

來源:互聯網
上載者:User

文中所有比較都是區分大小寫。

在C++中:

"a" < "A": True

"aA" < "A": True

"aA" < "AA": True

"Aa" < "AA": True

"ac" < "Ab": True

非常明顯,在C++中,字串比較遵循下面兩條規則:

1. 小寫<大寫

2. 從前向後依次比較。這一條的一個推論就是:無視整體長度。

我個人覺得這非常合理,這也就是英語詞典的排序方式。

 

但是我們看看在.NET中的結果。

String::Compare("a", "A"): –1

String::Compare("aA", "A"): 1       // .NET考慮整體長度。

String::Compare("aA", "AA"): –1

String::Compare("Aa", "AA"): -1

String::Compare("ac", "Ab"): 1      // 這個是我最不能理解的。明明是區分大小寫比較,.NET為什麼無視了第一個a的不同,而連第二個字元也考慮了進來?

不知道.NET裡還有什麼別的字串比較的方法沒有?用這個方法做詞典式排序很難。

如果說微軟這樣的比較結果是By Design的,那微軟又是針對的哪種實際環境呢?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.