Ich glaube nicht, dass ich IEnumerable
verstehe und mehrere Google-Suche durchgeführt haben.C# IEnumerable Implementierung
Ich soll einen Container von einigen Objekten machen, wobei die Klasse Container
die Aktualisierung der Sammlung bearbeiten soll, die der Container darstellt (hinzufügen, entfernen).
die Sammlung Container
sollte und Instanz von IEnumerable<element>
sein.
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();
}
}
}
Mein Problem ist, dass IEnumerable<Elements>
eine abstrakte Art und wenn ich _elm
diese Art machen kann ich nicht den Zustand des Container
behandeln, selbst wenn ich es machen
IEnumerable<Element> _elm = new List<Element>();
VS Fehler beschwert sich über :
'Container' does not implement interface member 'IEnumerable.GetEnumerator()'. 'Container.GetEnumerator()' cannot implement 'IEnumerable.GetEnumerator()' because it does not have the matching return of 'IEnumerator'.
ich weiß, dass es mehrere Antworten zu IEnumerable, aber sie helfen mir nicht.
Was ist der Unterschied zwischen 'Element' und' Elements'? Sie erben 'IEnumerable', aber deklarieren Sie den Rückgabetyp von 'GetEnumerator' als 'IEnumerator ' und Ihre fehlende generische 'IEnumerator GetEnumerator()' Methode. –
Wenn Sie in Visual Studio die Verknüpfung 'Schnittstelle implementieren' verwenden, werden die Methoden erstellt, die Sie implementieren müssen. Gemäß der Antwort von xanatos, die die fehlende GetEnumerator-Methode mit ihrer korrekten Rückgabetyp enthält. –
Warum erben Sie von IEnumerable? Und warum hast du drei verschiedene Listen? Sie können eine Wrapperklasse um ein IEnumerable (z. B. eine Liste) haben und über Methoden verfügen, die aus dieser Liste hinzufügen/entfernen. –