如何将键/值对插入字典?

时间:2012-05-25 13:00:34

标签: c# dictionary

当我使用DictionaryAdd添加条目时,会在其末尾添加KeyValuePair。因此,当我在KeyValuePair上进行迭代时,我想预先准备它,这是第一项。

有没有方法可以使用Dictionary或者我应该构建List<KeyValuePair<TKey, TValue>>还是你有更好的主张?

编辑:我以为我可以处理Dictionary中的枚举,但似乎我不能。

我尝试了List<KeyValuePair<TKey, TValue>>这不太实际。

5 个答案:

答案 0 :(得分:12)

Dictionary类中没有顺序概念 - Dictionary没有位置索引。

如果需要在字典上使用位置索引,请查看System.Collections.Specialized命名空间中的OrderedDictionary类。

答案 1 :(得分:4)

我认为你正在寻找OrderedDictionary

答案 2 :(得分:3)

使用OrderedDictionary

表示密钥或索引可访问的键/值对的集合。您可以将键值pait插入所需的索引。

答案 3 :(得分:3)

如果您希望保留订单,Dictionary不是您要使用的集合(它没有订单概念)。

如果您需要索引字典,可以使用OrderedDictionary集合。

还有一个SortedDictionary集合,它会根据键值对您添加的值进行排序。

答案 4 :(得分:0)

正式地说,如果你遍历它(Dictionary<,>,从而调用foreach),你永远不会知道你的键值对将以GetEnumerator()的顺序出现。当然,如果您Remove字典中的某些项目以及之后的Add其他项目,当您foreach通过集合时,新项目将位于在迭代“list”的末尾删除了项目 not

但是:如果您从Delete知道您永远不会Dictionary<,>,则枚举似乎会按照添加顺序生成项目。不能保证这总是有效,但看起来它在当前的实现中是有效的。

所以如果你敢依靠这个,你可以说

foreach (var keyValuePair in myDict.Reverse())
{
  ...

Reverse方法是LINQ的一部分(需要using System.Linq)。