我已经挖通过.NET
ExpressionVisitor
,我发现这个for
循环条件循环变量声明,对于在.NET中的源代码
for (int i = 0, n = nodes.Count; i < n; i++)
{
Expression node = Visit(nodes[i]);
if (newNodes != null)
{
newNodes[i] = node;
}
else if (!object.ReferenceEquals(node, nodes[i]))
{
newNodes = new Expression[n];
for (int j = 0; j < i; j++)
{
newNodes[j] = nodes[j];
}
newNodes[i] = node;
}
}
现在有没有什么特别的原因是:i = 0, n = nodes.Count; i < n
?
有没有从i = 0; i < nodes.Count
以外的任何性能收益?
在这个循环中,n也被用来计算节点的数量,只有一次开始,而不是每次迭代,我认为这是更好的方法。 –