5

二分探索木でノードの削除を練習していて、nullパターンを使用してnullリンク用の特別な型(NullNode)を作成したので、「null」型にいくつかの望ましい動作を追加できます。ノードタイプとヌルノードタイプの両方が、再帰メソッドを含む同じINodeインターフェイスを共有します。

INodeインターフェースには、PreOrder、InOrder、およびPostOrderトラバーサルによるIEnumerable再帰メソッドが含まれていますが、NullNodeが(yield returnステートメントを介して)要素を返すことは望ましくありません

私に何ができる?

不可能なif-conditionを使用して、メソッドにyield returnステートメントを配置できることは知っていますが、このソリューションは適切ではないと思います。より良いアプローチがあるはずです。

4

3 に答える 3

14

イールドブレークステートメントを使用します。

private static IEnumerable<INode> YieldEmpty()
{
    yield break;
}
于 2012-11-03T20:31:51.320 に答える
3

何も返さない(または空の列挙子)ために、このようなものを返そうとしましたか?

return Enumerable.Empty<T>();

またはyield break;、exityieldループの代わりに使用することもできます。これがあなたを助けることができることを願っています...

于 2012-11-03T20:29:41.843 に答える
2
private static IEnumerable<T> ReturnNoElements()
{
   return Enumerable.Empty<T>();
}
于 2012-11-03T20:30:19.937 に答える