using System.Collections;
public class Product : IEnumerable
private string[] products;
public Product(string[] products)
this.products = products;
public IEnumerator GetEnumerator()
return new ProductEnumerator(products);
public class ProductEnumerator : IEnumerator
private string[] products;
private int position = -1;
public ProductEnumerator(string[] products)
this.products = products;
return products[position];
catch (IndexOutOfRangeException)
throw new InvalidOperationException();
return (position < products.Length);
public static void Main()
string[] products = { "First Product", "Second Product", "Third Product" };
Product productList = new Product(products);
foreach (string product in productList)
Console.WriteLine(product);