我正在開發一個集合類,它應該實現IEnumerator和IEnumerable。實現集合的簡單方法?
在我的第一種方法中,我直接實現了它們。現在我已經發現了yield關鍵字,並且我已經能夠簡化一切,用readonly屬性代替IEnumerator/IEnumerable接口。使用yield的值在循環中返回IEnumerable。
我的問題:是否有可能使用yield,這樣我就可以迭代類本身,而不實現IEnumerable/IEnumerator?
即,我希望有類似框架的集合一個功能:
List<int> myList = new List<int>();
foreach (int i in myList)
{
...
}
這是可能的呢?
更新:看來我的問題措辭不妙。我不介意實現IEnumerator或IEnumerable;我只是認爲唯一的方法就是使用舊的Current/MoveNext/Reset方法。
我想不出任何理由,這將是一個好主意。我缺乏想象力嗎? IEnumerator不是一個複雜或繁瑣的界面。 – Jodrell 2011-05-26 09:05:12
@Jodrell:讓事情變得更簡單並不是一個好主意?爲什麼? – raven 2011-05-26 09:23:51
爲什麼你的收藏應該實現'IEnumerator'? –
CodesInChaos
2011-05-26 09:23:55