C#では、IEnumeratorインターフェイスは、コレクションをトラバースして要素を確認する方法を定義します。IEnumerable<T>
メソッドに渡すと元のソースが変更されないため、これは非常に便利だと思います。
ただし、Javaでは、Iteratorは削除操作を定義して(オプションで!)要素の削除を許可します。Iterable<T>
メソッドは元のコレクションを変更できるため、メソッドに渡すことに利点はありません。
remove
のオプション性は、拒否された遺贈の匂いの例ですが、それを無視すると(すでにここでremove
説明されています) 、インターフェイスにイベントを実装するように促した設計上の決定に興味があります。
remove
追加されることになった設計上の決定は何Iterator
ですか?
別の言い方をすれば、明示的にremove
定義されていないC#の設計上の決定はIEnumerator
何ですか?