无法打破foreach循环

时间:2014-10-21 15:20:16

标签: c#

我喜欢选择其文本与某些搅拌值匹配的节点,这样我就可以使用一个递归方法

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;
    }

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

2 个答案:

答案 0 :(得分:3)

trythis

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;
}

答案 1 :(得分:-1)

试试这种方式。您找到后返回节点,并一直返回

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);
        }
    }
}