Answers:
字典是1:1映射(每个键都映射到单个值),并且事实之后字典是可变的(可编辑的)。
查找是1:许多映射(多映射;每个键都映射到IEnumerable<>
具有该键的值),并且ILookup<,>
接口上没有任何突变。
附带说明一下,您可以查询(通过索引器)在不存在的键上的查询,并且会得到一个空序列。用字典做同样的事情,你会得到一个例外。
那么:每个键共享多少记录?
看它的过于简单化的方式是,一个Lookup<TKey,TValue>
是大致相当的Dictionary<TKey,IEnumerable<TValue>>
ILookup<,>
还是可以随意抛出的实现KeyNotFoundException
?Rx中的实现抛出一个KeyNotFoundException
。
Dictionary<TKey, IEnumerable<TValue>>
都有帮助:可以说是一个列表字典。所以ToLookup()
就像在说:给我一个字典清单。出于某种原因,听到它描述的方式可以帮助我直截了当地。
ToDictionary是<TKey,TValue>,而ToLookup <TKey,T1,T2,T3,...>与IGrouping类似,但枚举保留在内存中。
T1, T2, T3, ...
; ToLookup和ToDictionary(方法本身)具有几乎相同的API