Dictionary的存储不是无序的吗?为什么我用foreach遍历输出都是有序的?

histrainbow 2014-08-29 06:54:33

Dictionary<int,string> dic = new Dictionary<int,string>();
dic.Add(1,"一");
dic.Add(2,"二");
dic.Add(3, "三");
foreach (KeyValuePair<int,string> item in dic)
{
Console.WriteLine(item.Key.ToString()+item.Value.ToString());
}
Console.ReadKey();


如上的代码,输出顺序就是我存入的顺序啊。
另外如果把Dictionary换成Hashtable,那输出就是321的顺序,这又是为什么?
求大神解答!
...全文
3585 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanta 2014-09-03
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
这个问题前几天刚讨论过 不是无序,是不保证顺序 就是里面是有顺序的,但是不是按你想象中那样排序的
是的,也是有一定顺序,但这个顺序不一定按照你存入或编码的顺序存放。
huwei001982 2014-09-03
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
这个问题前几天刚讨论过 不是无序,是不保证顺序 就是里面是有顺序的,但是不是按你想象中那样排序的
正解
於黾 2014-09-02
  • 打赏
  • 举报
回复
dic.Add(1,"一"); dic.Add(2,"二"); dic.Add(3, "三"); 改为 dic.Add(1,"一"); dic.Add(3, "三"); dic.Add(2,"二"); 再看输出是什么
於黾 2014-09-02
  • 打赏
  • 举报
回复
这个问题前几天刚讨论过 不是无序,是不保证顺序 就是里面是有顺序的,但是不是按你想象中那样排序的
csz_1987 2014-09-02
  • 打赏
  • 举报
回复
Dictionary 要是有序,那 SortedDictionary 情何以堪。
泡泡龙 2014-08-29
  • 打赏
  • 举报
回复
弄几千个看看你就知道了,数据不要有规律
我叫小菜菜 2014-08-29
  • 打赏
  • 举报
回复
这要看底层实现。 还有个问题,测试数据只有1、2、3,不具有代表性。而且样本太小。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧