Skip to Content
C# Cookbook
book

C# Cookbook

by Stephen Teilhet, Jay Hilyard
January 2004
Beginner to intermediate
864 pages
22h 18m
English
O'Reilly Media, Inc.
Content preview from C# Cookbook

3.34. Creating Custom Enumerators

Problem

You need to add foreach support to a class, but the normal way of adding an IEnumerator class is not flexible enough. Instead of simply iterating from the first element to the last, you also need to iterate from the last to the first, and you need to be able to step over, or skip, a predefined number of elements on each iteration. All of these types of iterators should be available to your class.

Solution

The following interfaces allow polymorphic use of the foreach method:

using System.Collections;

public interface IRevEnumerator
{
    IEnumerator GetEnumerator( );
}

public interface IStepEnumerator
{
    IEnumerator GetEnumerator( );
}

The following class acts as a container for a private ArrayList called InternalList and is used in the foreach loop to iterate through the private InternalList:

public class Container : IEnumerable, IRevEnumerator, IStepEnumerator { public Container( ) { // Add dummy data to this class internalList.Add(-1); internalList.Add(1); internalList.Add(2); internalList.Add(3); internalList.Add(4); internalList.Add(5); internalList.Add(6); internalList.Add(7); internalList.Add(8); internalList.Add(9); internalList.Add(10); internalList.Add(200); internalList.Add(500); } private ArrayList internalList = new ArrayList( ); private int step = 1; IEnumerator IEnumerable.GetEnumerator( ) { return (new ContainerIterator(this)); } IEnumerator IRevEnumerator.GetEnumerator( ) { return (new RevContainerIterator(this)); } IEnumerator ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C# Cookbook

C# Cookbook

Joe Mayo
C# Cookbook, 2nd Edition

C# Cookbook, 2nd Edition

Jay Hilyard, Stephen Teilhet
ASP.NET Cookbook

ASP.NET Cookbook

Michael A Kittel, Geoffrey T. LeBlond

Publisher Resources

ISBN: 0596003390Supplemental ContentCatalog PageErrata