Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# For循环在C中迭代了一半时间#_C#_List_For Loop - Fatal编程技术网

C# For循环在C中迭代了一半时间#

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 {

在下面的代码段中,如果列表中不存在值,我将尝试隐藏树的子节点。目前,我有63个子节点,但循环会针对前32个值进行迭代。我无法使其在所有子节点上运行。如果您建议诊断这个问题,我将不胜感激

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
循环。发生这种情况时,可能会出现许多令人毛骨悚然的情况。

向后迭代。您在遍历节点时正在删除节点,这会更改现有节点的索引位置删除后保持同步