Eld*_*rum 6 .net c# sorting dictionary hashtable
我正在查看我的同事签入的一些代码,它看起来像这样:
return list.OrderBy(item => item.Order).ToDictionary(item => item.Id);
Run Code Online (Sandbox Code Playgroud)
我立即告诉我的同事他的代码是错误的,因为它Dictionary
是一个哈希表,一个非排序的集合.他应该使用保留订单的集合,或者稍后当他从字典中读取它们时对它们进行排序foreach
,我说.
但他回答说"不,不,我的代码是正确的!看:现在我已添加了OrderBy
,项目按正确的顺序出现."
事实证明,在测试用例中,他是对的.我尝试了其他一些数据,但它仍然完美排序!
我告诉他,他不应该依赖这种行为,但他不同意,我无法解释原因.此外,我很感兴趣为什么这个订单似乎经常被保留下来.
所以我的问题是......为什么Dictionary
一个从根本上未分类的集合看起来非常像它被排序?
它是按照Dictionary
实现的方式排序的(在您的情况下,项目按顺序添加).但这是实施细节.
告诉你的同事有一个存在的SortedDictionary类,这应该说服他我们不能依赖简单的项目顺序Dictionary
;)
归档时间: |
|
查看次数: |
1226 次 |
最近记录: |