代码之家  ›  专栏  ›  技术社区  ›  Samuel Kim

关于System.Linq.Lookup类

  •  15
  • Samuel Kim  · 技术社区  · 16 年前

    我在读一本C书的时候遇到了这门课,有一些问题。

    • 为什么要将它添加到System.Linq命名空间而不是通常的Collections命名空间?
    • 这门课的目的是什么
    • 为什么这个类不用于直接实例化?这只能通过Tolookup扩展提供,对吗?
    2 回复  |  直到 13 年前
        1
  •  17
  •   Jon Skeet    16 年前

    类的用途:一个键可以映射到多个值的字典。把它看作是分组而不是一对一映射。

    只有通过托洛库普的决定:通过。对我来说,这又是个坏消息。另一方面,它意味着结果对外部世界是不可变的,这是非常好的。当然,编写自己的支持这一点的集合是很容易的——但是将它“适当”地放入集合中会非常好。我的猜测是,微软没有足够的时间/金钱来进行相当严格的设计/测试,使其成为一流的收藏决策。

    名称空间决策:可能与上述有关。在system.collections.generic中有一个无法自己创建的版本会有点奇怪。

        2
  •  6
  •   Marc Gravell    16 年前

    作为旁白,请注意 MiscUtil 还包括一个 MiscUtil.Linq.EditableLookup<,> 类,类似;它实现 ILookup<,> 接口,但是是完全可变的-所以您可以创建它并添加自己的值。