在添加和删除项目时,继续迭代HashSet

时间:2015-12-16 21:00:28

标签: c# .net list hashset

如何在添加和删除项目时迭代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..

在程序中,我将向列表中添加随机值(有时不会添加任何内容),直到所有值都被处理完毕。

1 个答案:

答案 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);
    }
}