关于System.Linq.Lookup类

时间:2008-10-13 10:53:13

标签: c# linq

我在阅读C#书时遇到了这门课,并提出了一些问题。

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

2 个答案:

答案 0 :(得分:17)

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

仅通过ToLookup决定:通过。再一次,对我来说似乎是一个糟糕的电话。另一方面,这意味着结果对外界是不可改变的,这是相当不错的。当然,编写自己的集合很容易支持这个 - 但是在“正确”的集合中将它集合起来会非常好。我的猜测是,MS没有时间/金钱来完成所需的严格设计/测试,以使其成为一流的收藏决定。

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

答案 1 :(得分:6)

另外,请注意MiscUtil还包含MiscUtil.Linq.EditableLookup<,>类,类似;它实现了常规ILookup<,>接口,但是完全可变 - 因此您可以创建它并添加自己的值。