相关疑难解决方法(0)

修改我正在迭代的字典

foreach(BruteforceEntry be in Entries.Values)
{
    if (be.AddedTimeRemove <= now)
        Entries.Remove(be.IPAddress);
    else if (be.Unbantime <= now && be.Unbantime.Day == DateTime.Now.Day)
        Entries.Remove(be.IPAddress);
}
Run Code Online (Sandbox Code Playgroud)

抛出异常:

收集被修改; 枚举操作可能无法执行.

出于某种原因,它已经不复存在了.

我知道你不能删除某些东西,而是以这种方式迭代它.我的问题是:我该如何解决?

c#

26
推荐指数
2
解决办法
2万
查看次数

迭代字典时删除

可能重复:
在枚举时修改.NET字典

当我迭代并做一些操作时,我有一个字典对象.基于条件我应该删除或保持我正在迭代的keyvalue对.在迭代时从字典中删除keyvaluepair的最佳方法是什么?我试图使用一个单独的字典对象来跟踪要删除的元素,但我不知道如何使用它从我的主字典中删除或者如果这甚至是最有效的方法来做到这一点

谢谢

c#

12
推荐指数
2
解决办法
2万
查看次数

在枚举时插入队列

我想使用Queue对树进行广度优先搜索

var q = new Queue<T>();

q.Enqueue(Root);

foreach(T root in q)
{
  foreach(T t in root.Children)
    q.Enqueue(t);
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了"在实例化枚举器之后修改了集合".例外.

我可以用C#类型吗?


编辑:一点点阅读让我觉得我可能做错了.

有没有办法使用foreach从队列中出队?


这工作但很难看(OMHO)

var q = new Queue<T>();

q.Enqueue(Root);

while(q.Count > 0)
{
  T root = q.Dequeue();
  foreach(T t in root.Children)
    q.Enqueue(t);
}
Run Code Online (Sandbox Code Playgroud)

c# queue breadth-first-search data-structures

0
推荐指数
1
解决办法
1463
查看次数

标签 统计

c# ×3

breadth-first-search ×1

data-structures ×1

queue ×1