如何向后循环List或TreeNodeCollection?

时间:2014-08-06 12:13:54

标签: c# .net winforms

for (int i = nodes.Count; i < nodes.Count - 1; i--)
            {
                FindRecursive(nodes[i]);
            }

nodes.Count = 48 但它永远不会进入FindRecursive(nodes [i]);

2 个答案:

答案 0 :(得分:0)

启动循环的条件不正确。它应该是:

for (int i = nodes.Count -1; i >= 0; i--)
{
    FindRecursive(nodes[i]);
}

在您的代码中inodes.Count48)开始。然后循环在i < nodes.Count - 1时运行,但nodes.Count - 1永远不会大于nodes.Count。当你到达最后一个时,你想要停止循环,而当你向后移动时,你需要停止循环,即元素0

修改

用户默认和Yakyb在代码中正确发现起点也不正确。

nodes已从0编入索引nodes.Count - 1,因此起点应为nodes.Count - 1而不是nodes.Count,以防止超出范围的异常。

答案 1 :(得分:0)

使用LINQ扩展方法.Reverse()

foreach (int i in nodes.Reverse()){
  FindRecursive(i);
}