SortedSet first 和 Min() 不一样

SortedSet first and Min() are not the same

First 和 Min() 不一样
Last 和 Max() 不一样

在foreach中排序是
aaa
bbb
ccc
^^

分钟()
^^

最大值()
抄送

如何让 Min() 和 first 相同?
我怎样才能让 Max() 和 last 相同?

ss.FirstOrDefault() 不等于 ss.Min()
ss.Reverse().FirstOrDefault() 不等于 ss.Max()

public void SS()
{
    SortedSet<string> ss = new SortedSet<string>(StringComparer.OrdinalIgnoreCase);
    ss.Add("bbb");
    ss.Add("aaa");            
    ss.Add("^^");
    ss.Add("ccc");
    foreach (string s in ss)
        Debug.WriteLine(s);
    Debug.WriteLine(ss.Min());
    Debug.WriteLine(ss.Max());                   
}

简短的回答是:你不能。

较长的答案在 Min 实现中,here

如果您不比较数字,代码将使用 Comparer<TSource>.Default,不能保证它是您在 SortedSet 中使用的那个(在您的情况下不是).

顺便说一句,如果您只想让 Min 和 First 相同,请不要在创建集合时指定比较器。它将自动使用默认值。

使用 ss.Min 和 ss.Max 属性(不是方法)。