Un triéictionnaire est conforme à MSDN trié sur la clé. Cela signifie-t-il que vous pouvez être sûr que cela sera trié quand vous l'énumérer dans un forach? Ou cela signifie-t-il simplement que le triodictionnaire fonctionne de cette façon d'avoir une meilleure performance dans divers cas? P>
4 Réponses :
Oui, c'est exactement ce que cela signifie. P>
EDIT: la partie qui dit "Cela signifie-t-il que vous pouvez être sûr que cela sera trié quand vous l'énumérer dans un forach?" P>
Est-il garanti que c'est trié? (par rapport au dictionnaire régulier où il n'est pas)
Lorsque vous énumérez la collection, il est trié par les touches (même si vous énumérez-vous dire les valeurs code> collection). En interne, la collection est implémentée comme arbre de recherche binaire (selon la documentation). L'insertion et la recherche de valeurs sont O (log n) (ce qui signifie qu'ils sont assez efficaces). P>
de MSDN : P>
Le dictionnaire est maintenu dans un ordre trié à l'aide d'un arbre interne. Chaque nouvel élément est positionné à la position de tri correcte et l'arbre est ajusté pour maintenir l'ordre de tri chaque fois qu'un élément est enlevé. Tandis que énumérer, l'ordre de tri est maintenu. p> blockQuote>
MDR. Où dit-il ça? J'ai lu comme ... tout ça ... Doit devenir aveugle ...
Si vous énumérez les éléments dans un démonstration: strong> p> Notez que dans cette démo, les éléments ajoutés auddictionner code> sont em> pas em> ajoutés ordre trié. p> En outre, si vous envisagez d'énumérer votre dictionnaire par ses valeurs et que vous avez une possibilité de Sortie attendue: strong> p > triodictionnaire code>, les éléments seront renvoyés dans l'ordre de tri des clés d'élément. Et si vous énumérez par les touches du type code> code>, les touches seront également renvoyées dans la commande triée. Et peut-être un peu surprenant, si vous énumérez le type code> par ses valeurs, les valeurs sont renvoyées dans l'ordre de tri des touches, pas em> l'ordre de tri des valeurs comme vous leuriez peut-être attendez-vous.
== Enumerating Items ==
1 => One
2 => Two
3 => Three
4 => Four
5 => Five
== Enumerating Keys ==
1 => One
2 => Two
3 => Three
4 => Four
5 => Five
== Enumerating Values ==
One => 1
Two => 2
Three => 3
Four => 4
Five => 5