gpt4 book ai didi

c# - HashSet 在 C# 中删除项目时进行迭代

转载 作者:IT王子 更新时间:2023-10-29 04:22:59 25 4
gpt4 key购买 nike

我在 C# 中有一个哈希集,如果在遍历哈希集时满足条件,我将从中删除它,并且不能使用如下的 foreach 循环执行此操作。

foreach (String hashVal in hashset) 
{
if (hashVal == "somestring")
{
hash.Remove("somestring");
}
}

那么,如何在迭代时删除元素呢?

最佳答案

使用 RemoveWhere代替 HashSet 的方法:

hashset.RemoveWhere(s => s == "somestring");

您指定条件/谓词作为方法的参数。哈希集中与谓词匹配的任何项目都将被删除。

这避免了在迭代哈希集时修改哈希集的问题。


回应您的评论:

's' 表示从哈希集中评估的当前项。

上面的代码等价于:

hashset.RemoveWhere(delegate(string s) {return s == "somestring";});

或:

hashset.RemoveWhere(ShouldRemove);

public bool ShouldRemove(string s)
{
return s == "somestring";
}

编辑:我突然想到:由于 HashSet 是一个不包含重复值的集合,因此只需调用 hashset.Remove("somestring") 就足够了。没有必要在循环中进行,因为永远不会超过一个匹配项。

关于c# - HashSet 在 C# 中删除项目时进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com