好了,所以這裏的基本代碼:C#爲同一類實現兩個枚舉
class foo
{
String name;
int property;
}
class bar
{
private List<foo> a;
private List<foo> b;
}
我想打它,以便調用代碼可以通過遍歷任一列表中,但我想,讓他們免受編輯。我研究過實現IEnumarable接口,但問題是它期望有一個「GetEnumerable」定義,但我需要兩個不同的枚舉器。舉例來說,我希望能夠說
foreach(foo in bar.getA())
{ //do stuff }
然後
foreach(foo in bar.getB())
{ //do stuff }
我一定要繼承的每個元素和落實在每個IEnumerable接口,然後包括那些作爲屬性?我誤解了IEnumerable接口?我知道,表類有它自己的調查員,所以我可以做類似
class bar
{
private List<foo> a;
private List<foo> b;
public IEnumerator<foo> getAEnumerator()
{ return a.GetEnumerator();
public IEnumerator<foo> getBEnumerator()
{ return b.GetEnumerator();
}
但後來我的for循環看起來像這樣:
bar x = new bar();
IEnumerator<foo> y = x.getAEnumerator();
while (y.moveNext())
{
foo z = y.Current;
}
,所以我失去了「的foreach」可讀性。
有沒有一種方法可以完成對這些列表使用「foreach」而不公開公開這些列表?我仍然試圖讓我的頭在IENumerable接口,所以也許我錯過了明顯的東西。
見http://stackoverflow.com/questions/590991/merging-two-ienumerablets – haim770