c# - 如何将字典的值复制到 .Net 2.0 中的 IList 对象中?

标签 c# .net generics performance c#-2.0

如果我有一个:

Dictionary<string, int>

如何将所有值复制到:

List<int> 

对象?

解决方案需要与 2.0 CLR 版本和 C# 2.0 兼容——我真的没有更好的主意,除了遍历字典并将值一个一个地添加到 List 对象中。但是这样感觉效率很低。

有没有更好的办法?

最佳答案

可能值得注意的是,您应该退后一步,问问自己是否真的需要将项目存储在具有随机索引访问的列表中,或者您是否只需要不时枚举每个键或值。

您可以轻松地迭代 MyDictionary.Values 的 ICollection。

foreach (int item in dict.Values) { dosomething(item); }

否则,如果您确实需要将其存储为 IList,那么将所有项目复制过来并没有什么特别低效的;那只是一个 O(n) 操作。如果您不需要经常这样做,为什么要担心?如果您对编写代码来执行此操作感到恼火,请使用:

IList<int> x=new List<int>(dict.Values);

它将您要编写的代码包装到一个复制构造函数中,该构造函数已经实现了您计划编写的代码。这是高效的代码行,这可能是您真正关心的;它的空间或时间效率并不比您编写的内容高。

关于c# - 如何将字典的值复制到 .Net 2.0 中的 IList 对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770765/

相关文章:

.net - 新手 .net 问题 - 相当于 $_SESSION ['SERVER_NAME' 的变量]

java - 实现没有类型参数的泛型接口(interface)

用于处理 Class.<GenericType>method() 调用的 Javac 标志和 Eclipse 设置

c# - 将日期时间值更新到具有奇怪格式的数据库中显示不正确的日期

c# - 使用从数据库检索的 DateTime 进行减法给出奇怪的结果

c# - 哪个 ORM 支持这个

c# - 使用 C# WinForms 的透明图像

c# - 无法使用 Emgucv CUDA

.net - 无法加载文件或程序集 '***.dll' 或其依赖项之一

c# - 用于检查重复项的通用 C# 函数(不同对象、不同字段)