如何在添加和删除项目时迭代HashSet? 请记住,在实际程序中,有时候不会将任何内容添加到列表中,因此列表的结尾并不是无限循环。
例如:
static HashSet<int> listThingy = new HashSet<int>() { 1, 2 } ;
static void Main(string[] args)
{
foreach (var item in listThingy)
{
listThingy.Add(3);
listThingy.Remove(item);
Console.WriteLine(item);
}
}
输出应该是这样的:
1
2
3
3
3
3
3
3
etc..
在程序中,我将向列表中添加随机值(有时不会添加任何内容),直到所有值都被处理完毕。
答案 0 :(得分:-1)
最接近你所描述的是:
static ConcurrentDictionary<int, object> listThingy = new ConcurrentDictionary<int, object>();
static void Main(string[] args)
{
listThingy.Add(1, null);
listThingy.Add(2, null);
foreach (var item in listThingy)
{
object val = null;
listThingy.TryAdd(3, null);
listThingy.TryRemove(2, val);
Console.WriteLine(item);
}
}