2013-04-24 80 views
0

我有词典的问题。我使用此代码:辞典添加删除后

Dictionary<string, string> testDictionary = new Dictionary<string, string>(); 

testDictionary.Add("1", "1"); 
testDictionary.Add("2", "2"); 
testDictionary.Add("3", "3"); 

testDictionary.Remove("2"); 

testDictionary.Add("4", "4"); 

我想字典(键和值)后,这是[1,3,4],但它是[1,4,3]。我怎样才能做到这一点?

+1

为什么不像'testDictionary.OrderBy(x => x.Key)'那样对字典进行排序? – 2013-04-24 16:09:59

回答

6

字典本质上是无序的。
你不能那样做。

+1

仅当它不是System.Collections.Specialized.OrderedDictionary。或者System.Collections.Generic.SortedDictionary – 2013-04-24 16:10:17

+0

@voroninp,谢谢。 OrderedDictionary对我来说工作正常 – vasa911 2013-04-26 07:33:41

0

字典不一定 -ordered(它们的顺序是一致的,毕竟,如果任意),但它不是东西,你可以改变。

原因是字典是一个散列表,它将密钥散列到内存地址或散列表中的位置,具体取决于您的实现。这就是字典查询速度如此之快的原因,以及为什么只能有唯一的字典键。

有关更多信息,请参见http://en.wikipedia.org/wiki/Hash_table

+0

其实,他们的订单并不保证一致;它可以改变字典大小时。 – SLaks 2013-04-24 17:34:30

+0

你是对的;我的意思是,订单不是随机的。 – NWard 2013-04-25 07:20:01