我正在开发一个集合类,它应该实现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