更新:
从 .Net 4.7.2 开始,HashSet.TryGetValue - 文档 可用。
HashSet.TryGetValue - SO 帖子
我有一个与HashSet有关的问题,因为它不提供类似于Dictionary中已知的TryGetValue方法。而我需要这样的方法——传递要在集合中查找的元素,集合返回其集合中的元素(如果找到)。
旁注——“为什么你需要来自集合的元素,你已经有那个元素了吗?”不,我没有,相等和身份是两个不同的概念。
HashSet没有被密封,但它的所有字段都是私有的,所以从中派生是毫无意义的。我不能使用Dictionary,因为我需要SetEquals方法。我考虑过获取HashSet的源代码并添加所需的方法,但许可证并不真正是开源的(我可以查看,但我不能分发/修改)。我可以使用反射,但HashSet中的数组不是只读的,这意味着我不能将其绑定到每个实例生命周期一次的字段。
我不想为了单个类而使用完整的库。
目前我卡在了LINQ的SingleOrDefault
上。所以问题是如何解决这个问题--是否使用带有TryGetValue
的HashSet
?
TryGetValue
可能会有所帮助! - Trevor PilleyHashSet
周围定义自己的ISet<T>
门面。 - JodrellSetEquals
来与另一个集合或另一个集合进行比较吗? - LuaanSetEquals
来检查这两个集合是否相等。 - greenoldman