当我组合两个哈希集时,HashSet.Union和HashSet.Unionwith有什么不同?
我尝试这样组合:
HashSet<EngineType> enginesSupportAll = _filePolicyEvaluation.EnginesSupportAll;
enginesSupportAll = enginesSupportAll != null ? new HashSet<EngineType>(engines.Union(enginesSupportAll)) : enginesSupportAll;这个例子最好的方法是什么?为什么?
发布于 2017-08-28 19:30:05
它不是HashSet.Union,而是Enumerable.Union,所以您使用的是一个可以与任何类型的IEnumerable<>一起工作的LINQ扩展方法,而HashSet.UnionWith是一个修改当前实例的真正的HashSet方法。
Union返回一个IEnumerable<TSource>UnionWith is void,它会修改当前的HashSet instance的效率会稍微高一些,因为它可以优化
如果你不想在你的方法中支持任何类型的序列,所以HashSet是固定的,你可以修改它,使用它,否则就使用LINQ扩展。如果您只是为了这个目的而创建HashSet实例,那么这并不重要,我希望LINQ更灵活,并且能够链接我的查询。
https://stackoverflow.com/questions/45917831
复制相似问题