0

我需要表示一些具有键和一个或多个值的数据,似乎有一个 namevaluecollection 或一个查找。

据我所知,两者之间的主要区别是查找是不可变的,我应该注意两者之间的其他显着差异吗?

4

1 回答 1

2

NameValueCollection并且ILookup在几个方面有所不同。

首先,NameValueCollection 是一个从 string -> string 的映射——每个 key 只能有一个 value,并且 key 和 value 都必须是字符串。这听起来不符合您的要求:

我需要表示一些具有键和一个或多个值的数据

其次,ILookup本质上是一个通用的多重映射——它将一个键映射到一组一个或多个值——键和值都可以是任何类型。ILookup<,>正如您所提到的,它是不可变的,但它也不是直接可构造的。获取实例的唯一方法是使用Enumerable.ToLookup()方法。这要求所有数据必须立即可用 - 您不能随着时间的推移构建多地图。

如果您真正需要的是一个可变的多图,您应该查看MiscUtilEditableLookup<,>中的任何一个,您将 a 包装为您自己的类型。Dictionary<TKey,List<TValue>>

于 2011-07-19T01:36:26.203 回答