我有返回所有子树节点递归函数,给定的起始根节点。递归与产量返回元件订购树
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
对于下面的树结构:
A
|
+--B
|
+--C
| |
| +--D
|
+--E
当我试图重复这样:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
函数返回只有一个值。
我希望使用的产量返回递归和检索在预订元件(A,B,C,d,E在此实例中)。
(如果我把之前的foreach产量的回报,在foreach永远不会发生)。
这可能吗?
您是否尝试过,如果您将收益率回报在前面,则不调用该foreach?我想它会被调用。 – okrumnow 2012-02-03 09:55:56
是的,你是对的。收益率回报不会跳过其余的代码。看起来它只是一种允许价值回归并保持功能运行的语法糖。我的错。 – 2012-02-03 10:24:47