我想知道这是否有什么不同:
for (int i = 0; i < values.Count; i++)
{
//
}
对比
int num = values.Count;
for(int=0; i<num; i++)
{
}
我认为第二种方法更好,因为您不需要计算每次迭代中的所有项目。但我可能错了。有人可以照亮我吗?
我想知道这是否有什么不同:
for (int i = 0; i < values.Count; i++)
{
//
}
对比
int num = values.Count;
for(int=0; i<num; i++)
{
}
我认为第二种方法更好,因为您不需要计算每次迭代中的所有项目。但我可能错了。有人可以照亮我吗?
该列表已经在Count
内部存储了它。您正在进行的比较与代码风格有关,而不是性能。由于编译器会优化 'Count' 的检索
好吧,您可以在这里查看 .NET 源代码 http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs#aa7e01fcb80a917e
public int Count {
get {
Contract.Ensures(Contract.Result<int>() >= 0);
return _size;
}
}
似乎列表上的 .Count 属性会进行快速内部检查,然后返回 _size。所以它应该非常接近你自己存储值的性能。
这完全取决于是什么values
。Count
可以完全不同地实现,具体取决于此对象的类型。
如果您谈论的是泛型List<T>
- 然后 Count 被实现为不重新评估的内部属性 - 因此是更好的选择。