IEnumerable is the base  interface for all non generic collections that can be enumerated by implemented  interface  System.Collections.Generic.IEnumerable<T>. IEnumerable  contains a single method called GetEnumerator() which returns an IEnumerator and  also provides the ability to iterate through the collection by exposing a  Current property and MoveNext and Reset methods. IEnumerable  functionality using the foreach syntax however implementing IEnumerable is not  required. When using Visual Basic you must provide an IEnumerator  implementation which is returned by GetEnumerator. When developing with C# you  must provide a class that contains a Current property, and MoveNext and Reset  methods as described by IEnumerator, but the class does not have to implement  IEnumerator.