私は自分のArrayListクラスを実装していて、それに気付いたとき驚いた
public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
return _array.GetEnumerator();
}
うまくいきませんでした。配列が.NETでIEnumeratorを実装しない理由は何ですか?
回避策はありますか?
ありがとう
配列はIEnumerable<T>
を実装していますが、これはCLIが配列に対して持っている特別な知識の一部として行われます。これは、明示的な実装であるかのように機能します(ただし、そうではありません:実行時に行われます)。多くのツールはこの実装を表示しません。これはArray
クラスの概要の 備考 セクションで説明されています。
キャストを追加できます:
return ((IEnumerable<T>)_array).GetEnumerator();
これに関する古いMSDN(docs.Microsoft.com以前)のカバレッジは、.NETバージョンが異なると数回変更されます。 remarks セクションを確認してください。