我想知道,我什么时候可以使用foreach循环?我必须实现IEnumerable吗?
答案 0 :(得分:39)
无需实现IEnumerable接口即可使用foreach语句。以下是MSDN(http://msdn.microsoft.com/en-us/library/9yb8xew9.aspx)的引用:
在C#中,并非绝对必要 用于继承的集合类 IEnumerable和IEnumerator按顺序排列 与foreach兼容。只要 因为班级有必要的 GetEnumerator,MoveNext,Reset和 目前的成员,它将与之合作 的foreach。省略接口了 让你的优势 定义Current的返回类型 比Object更具体,哪个 提供类型安全。
答案 1 :(得分:2)
您可以通过任何实现IEnumerable
或IEnumberable<T>
答案 2 :(得分:2)
答案 3 :(得分:2)
问问自己 - 你真的需要一个循环计数器
我使用的经验法则是确定我是否在两个索引容器之间移动数据,我确实需要索引值来解决目标,或者更一般地说,'我是否需要每个项目的索引计数?在循环中处理'?在这些情况下,我使用for循环,在几乎所有其他情况下(foreach可以处理容器,如上所述几乎每个容器) - 原因很简单,使用foreach和使用foreach看起来很愚蠢然后不得不去手动维护循环计数器。