Heim >Backend-Entwicklung >C++ >Warum garantiert das C#-Wörterbuch die Reihenfolge der Elemente nicht und wie kann ich die alphabetische Reihenfolge sicherstellen?

Warum garantiert das C#-Wörterbuch die Reihenfolge der Elemente nicht und wie kann ich die alphabetische Reihenfolge sicherstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-17 19:01:10354Durchsuche

Why Doesn't C# Dictionary Guarantee Element Order, and How Can I Ensure Alphabetical Ordering?

Die C#-Wörterbuchreihenfolge (oder deren Fehlen) verstehen

Viele C#-Entwickler gehen fälschlicherweise davon aus, dass Dictionary Elemente in der Einfügereihenfolge zurückgegeben werden. Das ist falsch. Das folgende Beispiel verdeutlicht dies:

<code class="language-csharp">// Dictionary declaration
private Dictionary<string, string> _Dictionary = new Dictionary<string, string>();

// Add elements
_Dictionary.Add("orange", "1");
_Dictionary.Add("apple", "4");
_Dictionary.Add("cucumber", "6");
_Dictionary["banana"] = "7";
_Dictionary["pineapple"] = "7";

// Iterate and observe the order (non-deterministic)
foreach (KeyValuePair<string, string> kvp in _Dictionary)
{
    Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>

Die Ausgabe ist unvorhersehbar, da Dictionary eine Hash-Tabelle verwendet, die effiziente Schlüsselsuchen Vorrang vor der Aufrechterhaltung der Einfügungsreihenfolge hat. Die Reihenfolge der Iteration ist nicht garantiert und kann variieren.

Erzwingen der alphabetischen Reihenfolge mit SortedDictionary

Wenn Sie Elemente alphabetisch sortiert benötigen, verwenden Sie stattdessen SortedDictionary. Diese Klasse behält die sortierte Reihenfolge basierend auf dem Vergleicher des Schlüssels bei (Standard ist alphabetisch für Zeichenfolgen).

<code class="language-csharp">// SortedDictionary declaration
private SortedDictionary<string, string> _SortedDictionary = new SortedDictionary<string, string>();

// Add elements
_SortedDictionary.Add("orange", "1");
_SortedDictionary.Add("apple", "4");
_SortedDictionary.Add("cucumber", "6");
_SortedDictionary.Add("banana", "7");
_SortedDictionary.Add("pineapple", "7");

// Iterate and observe the alphabetical order
foreach (KeyValuePair<string, string> kvp in _SortedDictionary)
{
    Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>

Dies führt zu einer konsistent alphabetisch sortierten Ausgabe. Beachten Sie, dass SortedDictionary im Vergleich zu Dictionary einen Leistungsaufwand mit sich bringt. Verwenden Sie es daher nur, wenn die Reihenfolge unerlässlich ist.

Das obige ist der detaillierte Inhalt vonWarum garantiert das C#-Wörterbuch die Reihenfolge der Elemente nicht und wie kann ich die alphabetische Reihenfolge sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn