IEnumerable with custom Enumerator C# with Example



IEnumerable with custom Enumerator C# with Example

Implementing the IEnumerable interface allows classes to be enumerated in the same way as BCL collections. This 
requires extending the Enumerator class which tracks the state of the enumeration. 
Other than iterating over a standard collection, examples include: 
Using ranges of numbers based on a function rather than a collection of objects 
Implementing different iteration algorithms over collections, like DFS or BFS on a graph collection 
public static void Main(string[] args) { 
foreach (var coffee in new CoffeeCollection()) { 
Console.WriteLine(coffee); 
} 
} 
public class CoffeeCollection : IEnumerable { 
private CoffeeEnumerator enumerator; 
public CoffeeCollection() { 
enumerator = new CoffeeEnumerator(); 
} 
public IEnumerator GetEnumerator() { 
return enumerator; 
} 
public class CoffeeEnumerator : IEnumerator { 
string[] beverages = new string[3] { "espresso", "macchiato", "latte" }; 
int currentIndex = -1; 
public object Current { 
get { 
return beverages[currentIndex]; 
} 
} 
public bool MoveNext() { 
currentIndex++; 
if (currentIndex < beverages.Length) { 
return true; 
} 
return false; 
} 
public void Reset() { 
currentIndex = 0; 
} 
 

} 
} 

0 Comment's

Comment Form