C# dictionary 如何遍历过程中删除
在C#的Dictionary中,不能在遍历过程中直接删除元素,因为这会导致遍历过程中的迭代器失效,可能导致异常或错误的结果。
如果需要在遍历过程中删除元素,可以通过创建一个新的集合来存储需要删除的元素的键,并在遍历完成后,再使用这个新集合来删除元素。
例如:
Dictionary<int, string> dict = new Dictionary<int, string>()
{
{ 1, "One" },
{ 2, "Two" },
{ 3, "Three" },
{ 4, "Four" },
{ 5, "Five" }
};
List<int> keysToRemove = new List<int>();
foreach (var pair in dict)
{
// 根据某些条件判断是否需要删除元素
if (pair.Key % 2 == 0)
{
keysToRemove.Add(pair.Key);
}
}
foreach (var key in keysToRemove)
{
dict.Remove(key);
}
foreach (var pair in dict)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
在上面的例子中,我们首先遍历字典,判断条件是否需要删除元素,并将需要删除的键添加到keysToRemove列表中。然后,在第二个foreach循环中,我们使用Remove方法删除字典中的元素。最后,我们再次遍历字典来确认删除的元素已经被移除。
注意:在遍历过程中删除元素可能会影响性能,因为需要额外的内存来存储需要删除的键。如果性能是一个问题,可以考虑在遍历之后,根据需要删除的键来构建一个新的字典,而不是在遍历过程中删除元素
原文地址: http://www.cveoy.top/t/topic/ikve 著作权归作者所有。请勿转载和采集!