About System.Linq.Lookup class

本文关键字:class Lookup Linq System About | 更新日期: 2023-09-27 17:48:54

我在读一本C#书时遇到了这个类,有一些问题。

  • 为什么它被添加到System.Linq命名空间,而不是普通的Collections命名空间
  • 这门课的目的是什么
  • 为什么这个类不用于直接实例化?这只能通过ToLookup扩展使用,对吗

About System.Linq.Lookup class

类的用途:一个字典,其中一个键可以映射到多个值。可以将其视为分组,而不是一对一映射。

只有通过ToLookup决定:通过。再次,对我来说,这似乎是一个糟糕的决定。另一方面,这意味着结果对外界来说是不可变的,这很好。当然,编写自己的支持这一点的收藏集是很容易的,但如果能"正确"地将其纳入收藏集,那就太好了。我的猜测是,MS没有时间/金钱通过相当严格的设计/测试,使其成为一流的收藏品决策。

命名空间决定:可能与上述有关。在System.Collections.Generic中有一个你自己无法创建的版本会有点奇怪。

顺便说一句,注意MiscUtil还包括一个类似的MiscUtil.Linq.EditableLookup<,>类;它实现了常规的ILookup<,>接口,但它是完全可变的,因此您可以创建它并添加自己的值。