Exposes an enumerator, which supports a simple iteration over a non-generic collection.
To browse the .NET Framework source code for this type, see the Reference Source.
Assemblies: System.Runtime (in System.Runtime.dll)
mscorlib (in mscorlib.dll)
Thetype exposes the following members.
|AsParallel()||Overloaded. Enables parallelization of a query. (Defined by ParallelEnumerable.)|
|AsParallel()||Overloaded. (Defined by ParallelEnumerable.)|
|AsQueryable()||Overloaded. Converts an to an IQueryable. (Defined by Queryable.)|
|AsQueryable()||Overloaded. (Defined by Queryable.)|
|Cast<TResult>()||Overloaded. Casts the elements of an to the specified type. (Defined by Enumerable.)|
|Cast<TResult>()||Overloaded. (Defined by Enumerable.)|
|OfType<TResult>()||Overloaded. Filters the elements of an based on a specified type. (Defined by Enumerable.)|
|OfType<TResult>()||Overloaded. (Defined by Enumerable.)|
To view the .NET Framework source code for this type, see the Reference Source. You can browse through the source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging; see instructions.
is the base interface for all non-generic collections that can be enumerated. For the generic version of this interface see System.Collections.Generic::IEnumerable<T>. contains a single method, GetEnumerator, which returns an IEnumerator. IEnumerator provides the ability to iterate through the collection by exposing a Current property and MoveNext and Reset methods.
It is a best practice to implement and IEnumerator on your collection classes to enable the foreach (For Each in Visual Basic) syntax, however implementing is not required. If your collection does not implement , you must still follow the iterator pattern to support this syntax by providing a GetEnumerator method that returns an interface, class or struct. 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.
The following code example demonstrates the best practice for iterating a custom collection by implementing the and IEnumerator interfaces. In this example, members of these interfaces are not explicitly called, but they are implemented to support the use of foreach (For Each in Visual Basic) to iterate through the collection. This example is a complete Console app. To compile the Visual Basic app, change the Startup object to Sub Main in the project’s Properties page.
For a sample that shows how to implement the interface, see Implementing the IEnumerable Interface in a Collection Class
.NET FrameworkSupported in: 4.5.3, 4, 3.5, 3.0, 2.0, 1.1, 1.0
.NET Framework Client ProfileSupported in: 4, 3.5 SP1
Portable Class LibrarySupported in: Portable Class Library
.NET for Windows Store appsSupported in: Windows 8
Supported in: Windows Phone 8.1
Supported in: Windows Phone Silverlight 8.1
Supported in: Windows Phone Silverlight 8
Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.