在下面的代码片段中,如果列表中不存在值,我试图隐藏树的子节点。目前,我有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);
}
}
答案 0 :(得分:3)
如果您removeAt(0)
启动时有63个节点,那么您有62个节点,i
将增加到1.先前在索引1处的节点现在位于索引0并将被跳过。你的for循环从未实际查看该节点。这会以一种只检查一半节点的方式重复。您应该从最后一个索引开始并减少回零,以便删除一个节点不会影响您尚未检查的列表中的节点。
您应该始终注意迭代列表或数组的for
循环并在循环中修改它。发生这种情况时会出现许多毛茸茸的情况。