为什么当key已经存在而HashSet不存在时,Dictionary Add方法抛出异常



我试图理解这个设计决策背后的思考过程。也返回Dictionary的类型。Add是无效的。如果这两种数据结构具有相同的行为,那就太好了。或者是否存在使当前实现成为更好选择的用例?

HashSet类基于数学集模型,提供类似于访问Dictionary<TKey,TValue>或哈希表集合。简单地说,HashSet类可以看作是Dictionary<TKey,TValue>没有值的集合。

我试图理解这个设计决策背后的思考过程

只有真正做决定的人才能提供。他们不太可能在这里看到你的问题,尽管当然不能排除这种可能性。

是否有任何用例使当前实现成为更好的选择?

有很多用例。但要记住的主要事情是,将已经在集合中的相同对象添加到集合(如HashSet<T>)是非破坏性的,而将相同的键添加到字典(如Dictionary<TKey, TValue>)是破坏性的,即它覆盖了现有的值。

Add()方法像HashSet<T>一样返回bool不会有帮助;当您看到返回的false值时,键的旧值已经被替换了。

也就是说,一定要注意字典索引器静默地覆盖现有值。因此,实际上,字典具有与HashSet<T>+完全相同的功能,可以防止意外地覆盖已经存储的值。

相关内容

  • 没有找到相关文章

最新更新