January 2004
Beginner to intermediate
864 pages
22h 18m
English
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.
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 ...