相关疑难解决方法(0)

克隆HashSet <T>的有效方法?

几天前,我回答了一个关于SO 的有趣问题HashSet<T>.一个可能的解决方案涉及克隆hashset,在我的回答中我建议做这样的事情:

HashSet<int> original = ...
HashSet<int> clone = new HashSet<int>(original);
Run Code Online (Sandbox Code Playgroud)

虽然这种方法非常简单,但我怀疑它的效率非常低:新构造函数HashSet<T>需要单独添加原始hashset中的每个项目,并检查它是否已经存在.这显然是浪费时间:因为源集合是a ISet<T>,所以保证不包含重复项.应该有办法利用这些知识......

理想情况下,HashSet<T>应该实施ICloneable,但遗憾的是并非如此.我还检查了Reflector,看看如果HashSet<T>源集合是一个哈希集,构造函数是否做了特定的事情,但事实并非如此.它可能可以通过在私有字段上使用反射来完成,但这将是一个丑陋的黑客......

那么,有人提出了一个更有效地克隆哈希集的聪明解决方案吗?

(请注意,这个问题纯粹是理论上的,我不需要在真实的程序中这样做)

.net performance clone hashset

35
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

clone ×1

hashset ×1

performance ×1