Ja, Sort
ist an Ort und Stelle, wenn es das ist, was Sie meinen, und es wird sicherlich keine Iteratoren ungültig machen.
Wenn Sie eine sortierte „Ansicht“ der Sammlung sehen möchten, können Sie OrderBy
Operator LINQ verwenden, die nicht die bestehende Sammlung nicht verändert, sondern gibt eine Sequenz, die die Elemente aus der ursprünglichen Sammlung enthält, aber in der gegebenen Auftrag.
So zum Beispiel, statt:
// I want to print out the list of names, sorted...
names.Sort();
foreach (string name in names)
{
Console.WriteLine(name);
}
könnten Sie verwenden:
foreach (string name in names.OrderBy(x => x))
{
Console.WriteLine(name);
}
Eine weitere Alternative ist es gerade einmal zu sortieren, wenn Sie zuerst die Liste füllen, bevor irgendetwas über sie beginnt Iterieren - das ist die nur Änderung erforderlich, und wenn die Sortierreihenfolge nicht geändert wird (z. B. aufgrund von Änderungen an den Objekten in der Liste verwiesen), dann wäre es sinnvoll, nur einmal zu tun.
Das Sortieren einer Sammlung sollte nicht die einzelnen Elemente ändern, aber es wird offensichtlich die * Sammlung * ändern. –
Aber wird es eine modifizierte Sammlungsausnahme verursachen? – CodingHero
Blick auf diese Frage - http://StackOverflow.com/Questions/604831/Collection-was-modified-Enumeration-Operation-May-not-execute –