我正在练习在二叉搜索树上删除节点,并且我使用空模式为空链接( NullNode )创建了一个特殊类型,因此我可以为“null”添加一些理想的行为类型。 节点类型和 Nullnode 类型共享相同的 INode 接口,其中包含递归方法。
INode 接口包括 IEnumerable 递归方法,包括PreOrder,InOrder和PostOrder遍历,但我不希望NullNode返回任何元素(通过yield return语句)。
我该怎么办?
我知道我可以使用一个不可能的if条件,然后在方法中添加一个yield return语句,但我不认为这个解决方案是好的。应该有更好的方法。
答案 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>();
}