在遍历数据结构的时候,是不可以修改原数据结构的。不然就会抛出错误。
我常用的解决办法是做一份拷贝,遍历这个拷贝。(如果数据不是很大的话)
比如,这个代码:
IDictionary<int, string> ht = new Dictionary<int, string>();
ht.Add(1, "one");
ht.Add(2, "two");
// Print "one,two"
Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));
foreach (int key in new List<int>(ht.Keys)) {
if (key == 1) ht.Remove(key);
}
// Print "two"
Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));
我在遍历的时候,做了一份拷贝。代码是 new List<int>(ht.Keys),用到了 List 的构造拷贝函数,
会对 ht.Keys 做一份拷贝。之后的 foreach 其实是在对这个拷贝做遍历。
分享到:
相关推荐
本文主要介绍了Dictionary集合的7种最基础的用法,包括创建、添加、查找、遍历、删除等方法,程序都是由简入繁,希望能通过阅读简单的示例,给大家一些启发。
如果是对其它指定位置的插⼊、删除操作,最好选择 LinkedList HashMap、HashTable 的区别及其优缺点: HashTable 中的⽅法是同步的 HashMap 的⽅法在缺省情况下是⾮同步的 因此在多线程环境下需要做额外的同步机制。...
<>boolean Boolean char Character byte Byte ...栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 很详细的进销存系统文档
示例描述:介绍C#中常用集合类的使用。 CreateHashTable 演示创建Hash表实例 AddHashItem 演示添加元素到Hash表实例。 UseHashItem 演示Hash表属性、方法的使用实例 IndexList 演示通过索引访问List列表元素实例...
数组和集合 6.文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现...
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 22、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把...
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL...
删除注册表中与Oracle相关的内容,具体如下: 删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。 删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。 删除HKEY_...
完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...