我有一个哈希集,
var universe = new HashSet<int>();
还有一堆子集,
var sets = new List<HashSet<int>>(numSets);
我想减去一个 block ,我可以这样做:
var remaining = universe.ExceptWith(sets[0]);
但是 ExceptWith
就地工作。我不想修改 universe
。我应该先克隆它,还是有更好的方法?
最佳答案
I guess I should clone it first? How do I do that?
var universe = new HashSet<int>();
var subset = new HashSet<int>();
...
// clone the universe
var remaining = new HashSet<int>(universe);
remaining.ExceptWith(subset);
不像 Except
扩展方法那么简单,但可能更快(您应该运行一些性能测试来确保)
关于c# - 减去 HashSet(并返回一个副本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897568/