8

.NETが文字「+」と「^」をASCIIテーブルに表示される順序やSQLの並べ替え方法とは異なる順序で並べ替えるのはなぜですか。

ASCIIテーブルでは、「+」の値は42、「^」の値は94ですが、次のようなコードを実行すると、次のようになります。

var list = new List<string> { "+", "^", "!" };
list.Sort();

リストには、次の順序で値が含まれます。

{"!"、 "^"、 "+"}

LINQソートは同じ結果を生成します。誰かが.NETの種類を教えてもらえますか?

4

2 に答える 2

17

.NET は ASCII を使用せず、Unicode を使用します。文字列の並べ替えを実行すると、.NET (既定) は現在のカルチャの規則を並べ替えに使用します。この場合、これらのルールは、「^」が「+」の前に来ることを示しています。「序数」文字列比較子を使用して、期待どおりの結果を得ることができます。

var list = new List<string> { "+", "^", "!" };
list.Sort(StringComparer.Ordinal); // Order is "!", "+", "^"
于 2012-06-14T17:38:20.870 に答える
2

これは、 CompareInfoプロパティで定義されている現在のカルチャ セットによって定義されます。各カルチャには、カルチャ固有の文字列の並べ替え規則があります。

于 2012-06-14T17:39:25.747 に答える