Почему записи в порядке добавления в словаре .Net? - PullRequest
22 голосов
/ 30 сентября 2008

Я только что видел это поведение, и я немного удивлен этим ...

Если я добавлю 3 или 4 элемента в словарь, а затем выполню «Для каждого», чтобы получить все ключи, они отображаются в том же порядке, в котором я их добавил.

Причина, по которой меня это удивляет, заключается в том, что словарь должен быть HashTable внутри, поэтому я ожидал, что все будет происходить в ЛЮБОМ порядке (упорядочено по хэшу ключа, верно?)

Что мне здесь не хватает? На это поведение я могу рассчитывать?

РЕДАКТИРОВАТЬ: ОК, я уже думал о многих из причин, почему это может произойти (например, отдельный список записей, является ли это совпадением и т. Д.). Мой вопрос: кто-нибудь знает , как это действительно работает?

Ответы [ 11 ]

0 голосов
/ 30 сентября 2008

Из того, что я знаю, это не должно быть поведение, на которое можно положиться. Чтобы проверить это быстро используйте те же элементы и измените порядок, в котором вы добавляете их в словарь. Вы увидите, вернете ли вы их в том порядке, в котором они были добавлены, или это было просто совпадение.

...