【问题标题】:IDictionary interface without Remove()没有 Remove() 的字典接口
【发布时间】:2014-03-02 15:57:16
【问题描述】:

是否有不支持删除键值对的 IDictionary 接口?

不幸的是,IReadOnlyDictionary 没有帮助,因为它不允许修改键值对。

如果没有,我自己实现一个的好方法是什么?这是个好主意吗?

【问题讨论】:

  • 那么,如果我理解正确的话,您希望能够更改 字典中的条目,而不是删除 条目吗?
  • 这样做的原因是什么?您是否需要一个将成为公共 API 的一部分且不支持删除对象的集合接口?
  • @Chris/Ondrej:是的。 (注意:空值是可以的,但键必须始终在字典中 - 由于各种原因)
  • @JohnnyMopp:这会使界面“脏”,我更喜欢新界面。但是,我希望 BCL 中已经有类似的东西。
  • 嘿,你为什么不建立自己的班级??并从 Dictionary 类继承它并覆盖 remove 方法..我认为它对你有用..

标签: c# .net collections idictionary


【解决方案1】:

在cmets表示.NET没有内置接口后,最好自己创建接口,用Dictionary<TK,TV>的适配器实现。

(如果没有更好的结果,我将在两天后接受我自己的答案)

【讨论】:

  • 我们可能需要更多信息。作为合同的一部分,你会公开一个接口或一个类吗?在第二种情况下,显式实现和 NotSupportedException 可能是可行的。此外,也不要忘记 EditorBrowseableAttribute。
  • yupe 正如我评论的那样.. 我建议您将接口适配器实现为 Dictionary 并更改删除方法.. 就是这样..
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
相关资源
最近更新 更多