gpt4 book ai didi

c# - 在 C# 中的 foreach 循环中返回一次迭代

转载 作者:行者123 更新时间:2023-11-30 13:57:05 24 4
gpt4 key购买 nike

我有一个 foreach 循环,它在 C# 中迭代​​ treeView 的不同级别,其简化版本如下所示:

foreach (TreeNode childNode in currentNode.Nodes)
{
if (!someCondition)
{
currentNode.Remove();
}
}

但问题是,当一个节点(例如从 node1、node2、node3 和 node4 的列表中)被删除时,列表变得更短并且 foreach 循环跳过一次迭代(例如,假设如果要删除 node2,则列表变为 node1、node3 和 node4,foreach 循环考虑的下一个节点将是 node4 而不是 node3)。这是因为框架将这些节点存储在一个数组/列表中,所以我想知道当我想从树中删除一个节点时是否有可能使 foreach 循环返回一次迭代.

我是 .NET Framework 的新手,非常感谢您的帮助。

最佳答案

通过设置使用 Linq 或许可以实现预期的结果

currentNode.Nodes = currentNode.Nodes.Where( n => SomeCondition( n ) ).ToList();

或类似的东西,因此不需要显式迭代。一个不太优雅的解决方案是使用一个显式的 for 循环向后运行,这样循环索引就不会变得无效。但是,当有更结构化的方法可用时,我会考虑这种不良做法。

关于c# - 在 C# 中的 foreach 循环中返回一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com