如何产生return语句返回没有元素?

时间:2012-11-03 20:20:15

标签: c# methods iterator enumerator yield-return

我正在练习在二叉搜索树上删除节点,并且我使用空模式为空链接( NullNode )创建了一个特殊类型,因此我可以为“null”添加一些理想的行为类型。 节点类型和 Nullnode 类型共享相同的 INode 接口,其中包含递归方法。

INode 接口包括 IEnumerable 递归方法,包括PreOrder,InOrder和PostOrder遍历,但我不希望NullNode返回任何元素(通过yield return语句)。

我该怎么办?

我知道我可以使用一个不可能的if条件,然后在方法中添加一个yield return语句,但我不认为这个解决方案是好的。应该有更好的方法。

3 个答案:

答案 0 :(得分:12)

使用yield break语句:

private static IEnumerable<INode> YieldEmpty()
{
    yield break;
}

答案 1 :(得分:3)

如果您尝试返回此类内容而不返回任何内容(或空的枚举器):

return Enumerable.Empty<T>();

或者使用yield break;可以替代退出产量循环。希望这可以帮助你...

答案 2 :(得分:2)

private static IEnumerable<T> ReturnNoElements()
{
   return Enumerable.Empty<T>();
}