c# - 减去 HashSet(并返回一个副本)?

标签 c# hashset

我有一个哈希集,

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/

相关文章:

c# - 附加属性可以在 INotifyPropertyChanged 框架内工作吗?

java - 如何在调用 HashSet.add() 时使 HashSet<T> 调用 T.equals(Object )

c# - 需要从多个词典<Datetime,double> 中获取一组唯一的键

c# - 可空类型和三元运算符 : why is `? 10 : null` forbidden?

c# - Unity3d错​​误CS0103 : The name `PeerState' does not exist in the current context

java - Java 如何从 HashSet 中获取 100 个随机元素?

java - 哈希集迭代抛出非法状态错误

Java HashSet 使用自定义类作为键 : "contains()" function always return false

C# SOAP Web 服务客户端 - 显示如何记录所有原始 SOAP 输入和输出的示例?

c# - 验证 SWT token REST WCF 服务