Wenn ich einem Wörterbuch Werte hinzufüge und später irgendwo im Code, möchte ich dieses Wörterbuch in ein Array konvertieren mit:
%Vor%Wird das Array in der Reihenfolge ausgegeben, in der ich es eingegeben habe? Oder ist es irgendwann sortiert?
Wenn die Werte sortiert werden sollen (auf dem Key), dann sollten Sie ein SortedDictionary<K,V>
oder ein SortedList<K,V>
Bei einem normalen Wörterbuch ist die Reihenfolge der Werte von der Implementierung abhängig, aber Sie können davon ausgehen, dass es zufällig ist.
Die Reihenfolge der Eingabe ist verloren.
Die Reihenfolge, in der die Werte zurückgegeben werden, ist wahrscheinlich (aber nicht garantiert) dieselbe Reihenfolge, in der die Schlüssel gespeichert werden. Wie von Henk Holterman erwähnt, ist dies umsetzungsspezifisch und sollte nicht verlässlich sein.
MSDN-Eintrag für Dictionary ist sehr explizit:
Zu Zwecken der Aufzählung, jedes Element im Wörterbuch wird wie a behandelt KeyValuePair Struktur einen Wert und seinen Schlüssel darstellen. Das Reihenfolge, in der die Artikel zurückgegeben werden ist undefiniert.
BEARBEITEN Dictionary kann Sie in ein falsches Sicherheitsgefühl locken, indem Sie scheinbar Werte in der Reihenfolge zurückgeben, in der sie hinzugefügt wurden. Der Test zeigt jedoch, dass sein Verhalten wesentlich subtiler ist:
%Vor%Wenn Sie sich den Code genau ansehen, sehen Sie, dass die Reihenfolge der Elemente im Dictionary nicht die Reihenfolge ist, in der Elemente hinzugefügt werden, sondern die Reihenfolge, in der Elemente ursprünglich hinzugefügt werden .
Ich möchte nicht vorstellen, was mit mehreren Einfügungen und Löschungen im Laufe der Zeit passiert. Wenn Sie sich auf dieses undokumentierte Verhalten verlassen, werden Sie der Welt ein Äquivalent von US-Staatsschulden in Form von schlechtem Code-Offsets schulden . p>
Wenn myDictionary
vom Typ Dictionary<K,V>
ist, ist die Reihenfolge identisch mit der Reihenfolge, die von Keys
verwendet wird und ansonsten undefiniert. Insbesondere wird nicht garantiert, dass es sich um den Anzeigenauftrag handelt, oder um irgendeine sinnvolle Bestellung oder sogar darum, dass es sich um die gleiche Bestellung in verschiedenen Durchläufen derselben Anwendung handelt.
Die Reihenfolge der Werte in der Dictionary.ValueCollection ist nicht angegeben, aber sie hat dieselbe Reihenfolge wie die zugeordneten Schlüssel in Dictionary.KeyCollection, die von der Keys-Eigenschaft zurückgegeben wird.
Tags und Links c# dictionary