无法中断foreach循环

本文关键字:循环 foreach 中断 | 更新日期: 2023-09-27 18:27:16

我喜欢选择一个节点,在这个节点上,它的文本与一些stiring值匹配

private TreeNode GetSelectedNodes(TreeNode treeNode)
    {
        TreeNode result=new TreeNode();
        foreach (TreeNode node in treeNode.Nodes)
        {
            if (node.Text=="Child1")
            {
                result=node;
                break;
            }
            else
            if (node.Nodes.Count > 0)
            {
                this.GetSelectedNodes(node);
            }
        }
        return result;
    }

在上面的代码中,一个节点Text匹配"Child1",但它没有返回节点,而是再次调用它。GetSelectedNodes(节点);请告诉我这个代码出了什么问题。

无法中断foreach循环

尝试此

private TreeNode GetSelectedNodes(TreeNode treeNode)
{            
    foreach (TreeNode node in treeNode.Nodes)
    {
        if (node.Text=="Child1")
        {                   
            return node;
        }
        else
        {
            if (node.Nodes.Count > 0)
            {
                var result = this.GetSelectedNodes(node);
                if(result != null)
                {
                    return result;
                }
            }
        }
    }
    return null;
}

试试这种方法。一旦找到,就返回节点,并一直向上返回

private TreeNode GetSelectedNodes(TreeNode treeNode)
{
    TreeNode result=new TreeNode();
    foreach (TreeNode node in treeNode.Nodes)
    {
        if (node.Text=="Child1")
        {
            result=node;
            return result;
        }
        else if (node.Nodes.Count > 0)
        {
            return this.GetSelectedNodes(node);
        }
    }
}