我如何循环在一个列表或TreeNodeCollection向后

本文关键字:向后 一个 列表 TreeNodeCollection 何循环 循环 | 更新日期: 2023-09-27 18:16:34

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

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

我如何循环在一个列表或TreeNodeCollection向后

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

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

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

编辑

Users Default和Yakyb在代码中正确地发现起始点也不正确。

nodes0索引到nodes.Count - 1,所以起点应该是nodes.Count - 1而不是nodes.Count,以防止越界异常。

使用LINQ扩展方法.Reverse() .

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