我试图理解这个设计决策背后的思考过程。也返回Dictionary的类型。Add是无效的。如果这两种数据结构具有相同的行为,那就太好了。或者是否存在使当前实现成为更好选择的用例?
HashSet类基于数学集模型,提供类似于访问Dictionary<TKey,TValue>或哈希表集合。简单地说,HashSet类可以看作是Dictionary<TKey,TValue>没有值的集合。
我试图理解这个设计决策背后的思考过程
只有真正做决定的人才能提供。他们不太可能在这里看到你的问题,尽管当然不能排除这种可能性。
是否有任何用例使当前实现成为更好的选择?
有很多用例。但要记住的主要事情是,将已经在集合中的相同对象添加到集合(如HashSet<T>
)是非破坏性的,而将相同的键添加到字典(如Dictionary<TKey, TValue>
)是破坏性的,即它覆盖了现有的值。
让Add()
方法像HashSet<T>
一样返回bool
不会有帮助;当您看到返回的false
值时,键的旧值已经被替换了。
HashSet<T>
,+完全相同的功能,可以防止意外地覆盖已经存储的值。