IEnumerable是否需要使用foreach循环?

时间:2010-08-27 13:00:06

标签: c# ienumerable foreach

我想知道,我什么时候可以使用foreach循环?我必须实现IEnumerable吗?

4 个答案:

答案 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)

您可以通过任何实现IEnumerableIEnumberable<T>

的对象来预告

答案 2 :(得分:2)

答案 3 :(得分:2)

问问自己 - 你真的需要一个循环计数器

我使用的经验法则是确定我是否在两个索引容器之间移动数据,我确实需要索引值来解决目标,或者更一般地说,'我是否需要每个项目的索引计数?在循环中处理'?在这些情况下,我使用for循环,在几乎所有其他情况下(foreach可以处理容器,如上所述几乎每个容器) - 原因很简单,使用foreach和使用foreach看起来很愚蠢然后不得不去手动维护循环计数器。