私はIEnumerable
を理解しているとは思わないし、いくつかのGoogle検索を行っています。C#IEnumerable implementation
私はいくつかのオブジェクトのコンテナを作成することになっています。クラスContainer
はコンテナが表すコレクションの更新(追加、削除)を処理する必要があります。
コレクションContainer
は、IEnumerable<element>
である必要があります。
namespace ....
{
public class Container : Ienumerable<Elements>
{
List<Elements> _elm = new List<Elements>();
List<Elements> _add = new List<Elements>();
List<Elements> _rem = new List<Elements>();
public voic PendAdd(Element elm)
{
_add.Add(elm);
}
public voic Pendrem(Element elm)
{
_rem.remove(elm);
}
...
public IEnumerator<Element> GetEnumerator()
{
return _elm.GetEnumerator();
}
}
}
私の問題はIEnumerable<Elements>
は抽象型であることであると私は_elm
このタイプを作る場合、私はそれが
IEnumerable<Element> _elm = new List<Element>();
VSはエラーについて不平を言う作る場合でもContainer
の状態を扱うことができません:
'Container' does not implement interface member 'IEnumerable.GetEnumerator()'. 'Container.GetEnumerator()' cannot implement 'IEnumerable.GetEnumerator()' because it does not have the matching return of 'IEnumerator'.
私はIEnumerableをについて、いくつかの答えがあることを知っているが、彼らは私を助けていません。
'Element'と' Elements'の違いは何ですか?あなたは 'IEnumerable'を継承しますが、 'GetEnumerator'の戻り値の型は' IEnumerator 'と非ジェネリックな' IEnumerator GetEnumerator() 'メソッドがないと宣言します。 –
Visual Studioで[インターフェイスの実装]ショートカットを使用すると、実装する必要があるメソッドが作成されます。 xanatosの回答によれば、欠落しているGetEnumeratorメソッドと正しい戻り値の型が含まれています。 –
なぜあなたはIEnumerableから継承していますか?そしてなぜあなたは3つの異なるリストを持っていますか? IEnumerable(Listなど)の周りにラッパークラスを持ち、そのリストから追加/削除するメソッドを持つことができます。 –