我不認爲我理解IEnumerable
並已經做了幾次谷歌搜索。C#IEnumerable的實現
我應該做一個對象的容器,其中類Container
應該處理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
這種類型的我無法處理Container
的狀態,即使我讓
IEnumerable<Element> _elm = new List<Element>();
VS抱怨錯誤:
'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繼承?爲什麼你有三個不同的列表?你可以圍繞一個IEnumerable(比如一個List)創建一個包裝類,並且可以添加/刪除該列表中的方法。 –