代码之家  ›  专栏  ›  技术社区  ›  user19871

Java的AbstractMap在C#中的等价物是什么?

  •  3
  • user19871  · 技术社区  · 16 年前

    我需要创建一个暴露 IDictionary<K,V> 接口,但我不想填充整个接口实现。

    最好有Java的AbstractDictionary的等价物,这样您就很少需要一个完整的字典了(Java中的HashMap):

    • 如果您不需要迭代集合,那么可以实现一个方法(TryGetValue)
    • 如果您希望它是可写的,您可以实现另一个条目(Add)。
    3 回复  |  直到 16 年前
        1
  •  4
  •   Bradley Grainger    16 年前

    温特莱特的 PowerCollections library 包括 DictionaryBase 班级( source code )实现了大部分标准IDictionary<K、 V>接口。从课程的文档注释中:

    DictionaryBase是一个基类 可以用来更容易地实现 通用IDictionary<T>和 非泛型IDictionary接口。

    要使用DictionaryBase作为基类, 派生类必须重写Count, GetEnumerator,TryGetValue,清除, 移除,并将索引器设置为访问器。

        2
  •  3
  •   Sergiu Damian    16 年前

    System.Collections.Generic 命名空间包含 IDictionary<K,V> : Dictionary<TKey, TValue> , SortedDictionary<TKey, TValue> SortedList<TKey, TValue>

        3
  •  0
  •   Dónal    14 年前

    如果我正在构建自己的dictionary类,则从System.Collections.ObjectModel.KeyedCollection继承。

    永远不要从公共属性或函数返回泛型列表或字典。Insead应该返回一个专门为此目的构建的类。这样,您可以在以后添加其他功能。

    Dictionay<integer, Order> Orders() {get;}
    CustomerOrders Orders() {get;}
    

    在第二个版本中,您可以添加Total属性并让用户实际找到它。