【发布时间】:2013-03-06 21:11:23
【问题描述】:
我使用的结构可以表示为:
IEnumerable<KeyValuePair<TKey, TValue>>
鉴于编写时间太长(不算代码分析可能会发出警告),我更喜欢使用更具表现力的类型。 .NET Framework 中是否有这种类型,或者我应该创建自己的类型?
注意它和字典不一样:
IDictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
因为字典确保每个键都是唯一的,这不是我的情况。我也不能使用查找:
Lookup<TKey, TValue> : IEnumerable<IGrouping<TKey, TValue>>
因为查找不是惰性的,即它需要刷新所有数据才能对其进行分组。
【问题讨论】:
-
添加、删除、查找等操作的时间复杂度是多少?
-
IEnumerable<Tuple<T1, T2>>键入起来更短... -
实施上是否需要其他限制?
-
旁注:设计您的 API 时,您根本不需要键入它 -
var在左侧,通用工厂方法可以自动发现右侧的正确类型...
标签: c# .net data-structures ienumerable lazy-evaluation