如何将键/值对插入字典

本文关键字:插入 字典 | 更新日期: 2023-09-27 18:35:30

当我使用 AddDictionary添加一个条目时,KeyValuePair被添加到它的末尾。我想在迭代KeyValuePair时准备它,它是第一项。

有没有办法用Dictionary来做到这一点,或者我应该建立一个List<KeyValuePair<TKey, TValue>>,或者你有更好的建议吗?

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

我尝试了List<KeyValuePair<TKey, TValue>>这不是很实用。

如何将键/值对插入字典

Dictionary类内部没有秩序的概念 - Dictionary没有位置索引。

如果需要在

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

我想你正在寻找OrderedDictionary。

使用 OrderedDictionary .

表示可由键或索引访问的键/值对的集合。您可以在所需索引处插入键值 pait。

如果你想保持秩序,Dictionary不是你想使用的集合(它没有秩序的概念)。

如果您需要

索引词典,有一个OrderedDictionary集合会有所帮助。

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

正式地,如果你遍历一个键值对(foreach它,从而调用GetEnumerator()),你永远无法知道你的键值对将以什么顺序从Dictionary<,>中出来。当然,如果您从字典中Remove一些项目,然后Add其他一些项目,当您foreach集合时,新项目将位于已删除项目的空间中,而不是在迭代"列表"的末尾。

但是:如果你知道你从来没有从你的Dictionary<,> Delete,看起来枚举会按照添加的顺序生成项目。不能保证这将始终有效,但看起来它在当前实现中有效。

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

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

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