2
私はバイナリツリーを実装する次のコードを見つけました。 foreachを容易にするために、IEnumerable
が実装されています。これはforeachを動作させる最も簡単な方法ですか?私はなぜ2つのGetEnumerator()
機能が必要なのか分からない。IEnumerable <T>データ構造の実装
public class BinaryTree<T> : IEnumerable<T>
{
..
public IEnumerator<T> InOrderTraversal()
{
...
yield return curr.Value;
...
}
public IEnumerator<T> GetEnumerator()
{
return InOrderTraversal();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
レガシーコードを気にしないとすれば、どうして非ジェネリックな 'GetEnumerator'関数を削除できないのですか?それはコンパイルされません。 – devnull
これはIEnumerableを実装しているため、レガシーGetEnumerator()をそのインターフェイスの一部として持つIEnumerableから継承しています。 –