erster Min() sind nicht die gleichen
Last und Max() sind nicht die gleichenSortedSet ersten und Min() sind nicht die gleichen
Im foreach die Sortierung
aaa
bbb
ccc
^^
Min()
^^
Max()
cc
Wie kann ich Min() bekommen und zuerst dasselbe sein?
Wie kann ich Max() und zuletzt die gleiche sein?
ss.FirstOrDefault() nicht gleich ss.Min()
ss.Reverse() FirstOrDefault() nicht gleich 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());
}
Mit der Instanzeigenschaft 'ss.Min' wird das minimale Element in Bezug auf die Struktur von 'SortedSet' gefunden und damit der Vergleich berücksichtigt, der von dieser Gruppe übernommen wird. Die 'ss.Min()' LINQ-Erweiterungsmethode vergisst jedoch alles über die sortierte Struktur und findet einfach das minimale Element in Bezug auf den Standard-Vergleicher (das ist 'Comparer .Default'), der genau wie' StringComparer.CurrentCulture funktioniert '. Mit "Ordinal-Ignorier-Fall" wird ein "a" (U + 0061) wie ein "A" behandelt (U + 0041), das _los_ ist als "^" (U + 005E). In deiner Kultur sind Buchstaben _greater_ als '^'. –