【发布时间】:2011-04-25 20:21:47
【问题描述】:
我知道哈希表的 Add 和 assignment-via-indexer 操作是不同的(即后者将允许覆盖而前者抛出“项目已添加。在字典中键入:...”异常) .我的问题是,在什么情况下你会想要添加一些东西,但如果它已经存在则抛出异常?
具体来说,这似乎只是对另外两个原子操作(包含和通过索引器分配)的封装,我无法想出一个单一的场景来让微软以封装的方式处理这个问题.
编辑:我完全支持异常情况应该抛出异常的想法,并且当给定键已经在字典中时,Add(虽然只是一个封装)提供异常。但是,通常 Hashtables 和 Dictionaries 用于从键到值的快速查找。此外,大多数时候,当我构建一个时,我已经拥有了整个集合,我只是将它翻译成字典。
我刚刚举了一个例子……我可以想象一个场景,您使用哈希表(或字典)来跟踪登录到特定会话的用户的会话。如果您有一个特定要求,即每个用户一次只能从一个位置登录(并且他们必须在再次登录之前退出一个会话),那么您可能需要 Add,因为它更清楚地定义了代码。
【问题讨论】: