假设我们有两个选择:
public static Dictionary<TK, TV> GetDictionary(IEnumerable<TK> keys)
{
var result = new Dictionary<TK, TV>();
...
return result;
}
VS
public static Dictionary<TK, TV> GetDictionary(IEnumerable<TK> keys)
{
var result = new Dictionary<TK, TV>(keys.Count());
...
return result;
}
每种的优点和缺点是什么? 最近在我们的团队中我们有一个争论。
明确大小的可能缺点
IEnumerable
的完全枚举。显式尺寸的可能优点
什么是更好的选择还是有一些经验法则?
答案 0 :(得分:2)
假设您正在处理大量项目和,您在O(1)时间内知道此号码,我会考虑向Dictionary
提供此信息。一般来说,如果预先计算某些东西很便宜,可能会在某些情况下产生影响。
因此,在您的情况下,如果您真的使用了大量项目,并且能够提供计数而不实际枚举它们(这是Count()
扩展方法的作用),那么请继续。在实践中,这意味着您应该将至少 ICollection<T>
传递给您的方法:
public static Dictionary<TK, TV> GetDictionary(ICollection<TK> keys)
{
var result = new Dictionary<TK, TV>(keys.Count);
...
return result;
}
如果