在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方法删除字典中的元素。最后,我们再次遍历字典来确认删除的元素已经被移除。

注意:在遍历过程中删除元素可能会影响性能,因为需要额外的内存来存储需要删除的键。如果性能是一个问题,可以考虑在遍历之后,根据需要删除的键来构建一个新的字典,而不是在遍历过程中删除元素

C# dictionary 如何遍历过程中删除

原文地址: http://www.cveoy.top/t/topic/ikve 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录