C#字典遍歷時(shí)能刪除元素嗎

c#
小樊
173
2024-07-30 14:57:11
欄目: 編程語言

在遍歷字典的過程中刪除元素是不安全的,會(huì)導(dǎo)致遍歷過程中出現(xiàn)異常。這是因?yàn)樵诒闅v的過程中,字典的結(jié)構(gòu)會(huì)發(fā)生變化,可能會(huì)導(dǎo)致遍歷器失效或者引發(fā)并發(fā)修改異常。

如果需要在遍歷過程中刪除元素,可以先將需要?jiǎng)h除的元素的鍵收集起來,然后再遍歷這些鍵進(jìn)行刪除操作。示例代碼如下所示:

Dictionary<int, string> dict = new Dictionary<int, string>();

// 添加元素
dict.Add(1, "one");
dict.Add(2, "two");
dict.Add(3, "three");
dict.Add(4, "four");

// 收集需要?jiǎng)h除的鍵
List<int> keysToRemove = new List<int>();

foreach (var pair in dict)
{
    if (pair.Key % 2 == 0)
    {
        keysToRemove.Add(pair.Key);
    }
}

// 遍歷收集到的鍵進(jìn)行刪除操作
foreach (var key in keysToRemove)
{
    dict.Remove(key);
}

這樣就可以在遍歷字典的過程中安全地刪除元素。

0