默认字符串排序顺序

本文关键字:顺序 排序 字符串 默认 | 更新日期: 2023-09-27 17:56:14

默认排序顺序是实现细节吗? 或者如何选择默认比较器?

这让我想起了这个建议。 "不要在数据库中存储哈希码"

以下代码是否保证以相同的顺序对字符串进行排序?

string[] randomStrings = { "Hello", "There", "World", "The", "Secrete", "To", "Life", };
randomStrings.ToList().Sort();

默认字符串排序顺序

字符串始终按字母顺序排序。

默认 ( string.CompareTo() ) 使用当前区域性的 Unicode 比较规则:

    public int CompareTo(String strB) {
        if (strB==null) { 
            return 1;
        } 
        return CultureInfo.CurrentCulture.CompareInfo.Compare(this, strB, 0);
    } 

List<T>.Sort的重载使用字符串的默认比较器,其实现方式如下:

此方法执行一个单词(区分大小写和区分区域性) 使用当前区域性进行比较。有关单词的更多信息, 字符串和序号排序,请参阅System.Globalization.CompareOptions

如果未指定比较器,则排序将使用按字母顺序排序的默认比较器。 所以要回答你的问题,是的,代码将始终以相同的顺序返回字符串。

排序

方法有一个重载,如果您希望以不同的顺序对数据进行排序,则可以指定自己的比较器。

我想在您对字符串进行排序时发布与文化事物相关的回复,但 Jon 已经添加了它:-(。是的,我认为您也可以考虑这个问题,因为它默认按字母顺序选择,如果作为英语(即西班牙语)之外的外国存在,则随机字符串将放在英语之后,毕竟它们出现在相同的第一个字母中。这意味着您需要一个全球化命名空间来处理它。

顺便说一句,蒂莫西,这是秘密分泌:D

代码从

数组复制创建一个新列表,对该列表进行排序,然后丢弃它。它根本不会更改数组。

尝试:

Array.Sort(randomStrings);