C# For循环在C中迭代了一半时间#
在下面的代码段中,如果列表中不存在值,我将尝试隐藏树的子节点。目前,我有63个子节点,但循环会针对前32个值进行迭代。我无法使其在所有子节点上运行。如果您建议诊断这个问题,我将不胜感激C# For循环在C中迭代了一半时间#,c#,list,for-loop,C#,List,For Loop,在下面的代码段中,如果列表中不存在值,我将尝试隐藏树的子节点。目前,我有63个子节点,但循环会针对前32个值进行迭代。我无法使其在所有子节点上运行。如果您建议诊断这个问题,我将不胜感激 for (int i = 0; i < docTree.Nodes[0].ChildNodes.Count; i++) { if (tempList.Contains(docTree.Nodes[0].ChildNodes[i].Value)) { } else {
for (int i = 0; i < docTree.Nodes[0].ChildNodes.Count; i++)
{
if (tempList.Contains(docTree.Nodes[0].ChildNodes[i].Value))
{
}
else {
docTree.Nodes[0].ChildNodes.RemoveAt(i);
}
}
for(int i=0;i
开始时,有63个节点如果删除(0)
则有62个节点,i
将增加到1。以前位于索引1的节点现在位于索引0,将被跳过。for循环从未实际查看该节点。这将以只检查一半节点的方式重复。您应该从最后一个索引开始,并递减回零,以便删除节点不会影响列表中尚未检查的节点
您应该始终注意在列表或数组上迭代并在循环中修改它的
for
循环。发生这种情况时,可能会出现许多令人毛骨悚然的情况。向后迭代。您在遍历节点时正在删除节点,这会更改现有节点的索引位置代码>删除后保持同步