如何遍历并删除Dictionary集合内容
推荐于2016-10-23 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517192
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
在遍历数据结构的时候,是不可以修改原数据结构的。不然就会抛出错误。
我常用的解决办法是做一份拷贝,遍历这个拷贝。(如果数据不是很大的话)
比如,这个代码:
C#代码
1.<SPAN style="FONT-SIZE: x-small">IDictionary<int, string> ht = new Dictionary<int, string>();
2.ht.Add(1, "one");
3.ht.Add(2, "two");
4.
5.// Print "one,two"
6.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));
7.
8.foreach (int key in new List<int>(ht.Keys)) {
9. if (key == 1) ht.Remove(key);
10.}
11.
12.// Print "two"
13.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));</SPAN>
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 其实是在对这个拷贝做遍历。
转载
guojian3021886
我常用的解决办法是做一份拷贝,遍历这个拷贝。(如果数据不是很大的话)
比如,这个代码:
C#代码
1.<SPAN style="FONT-SIZE: x-small">IDictionary<int, string> ht = new Dictionary<int, string>();
2.ht.Add(1, "one");
3.ht.Add(2, "two");
4.
5.// Print "one,two"
6.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));
7.
8.foreach (int key in new List<int>(ht.Keys)) {
9. if (key == 1) ht.Remove(key);
10.}
11.
12.// Print "two"
13.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));</SPAN>
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 其实是在对这个拷贝做遍历。
转载
guojian3021886
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询