我想这并不重要,我只是好奇。
如果字典和查找之间的区别是一个是一对一的,另一个是一对多的,那么不会通过另一个更具体/派生的版本来字典吗?
查找是键/值对的集合,其中键可以重复。 字典是键/值对的集合,其中键不能重复。
为什么 IDictionary 不能实现 ILookup?
最佳答案
我怀疑这主要是因为意图不同。
ILookup<T,U>
专为处理值集合而设计。 IDictionary<T,U>
旨在使用单个值(当然可以是一个集合)。
虽然您当然可以拥有 IDictionary<T,U>
实现通过返回 IEnumerable<U>
来实现这一点使用单个值,这会造成混淆,特别是如果您的“U”本身就是一个集合(即:List<int>
)。在那种情况下,会 ILookup<T,U>.Item
返回 IEnumerable<List<int>>
,还是应该对 IEnumerable<T>
进行某种类型的检查?值类型,然后“扁平化”呢?无论哪种方式,它都会看起来令人困惑,并增加可疑的值(value)。
关于c# - 为什么 IDictionary<TKey,TValue> 不/不能实现 ILookup<TKey,TValue>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099492/