代码之家  ›  专栏  ›  技术社区  ›  Sean Devlin

为什么.NET framework中没有“set”接口?

  •  5
  • Sean Devlin  · 技术社区  · 15 年前

    我在特别考虑泛型类 HashSet<T> Add 方法返回 bool ICollection<T> void Add 这些接口也不支持常用的集合操作,如并集和交集(尽管必须指出的是,其中一些操作可以通过 IEnumerable<T>

    这意味着该类只能像一个集合一样直接实现。也就是说,你不能这样做:

    ISet<int> = new HashSet<int>;
    

    至少据我所知不是这样。那么,是什么促使人们选择忽略这一点呢?

    HashSet<T> i收集<T> 能够 呼叫 ICollection<T>.Add

    2 回复  |  直到 15 年前
        1
  •  8
  •   Jørn Schou-Rode dscher    15 年前

    虽然我不确定为什么它没有更早地进入基类库,但是 ISet 在.NET 4.0中提供,仅在发货后数周内提供。该接口具有在集合上预期的大多数方法。以下是一些受支持的方法:

    • 添加、清除、包含、复制到、GetEnumerator、删除(继承)
    • 相交于
    • 发行
    • 发行时间
    • 联合

    这个 HashSet SortedSet 集合实现了这个新接口。

        2
  •  0
  •   UpTheCreek    15 年前