using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public static void Main()
Console.WriteLine("Iterator example");
Console.WriteLine("Example 1");
if (Iterator() is IEnumerable)
foreach (var item in Iterator())
Console.WriteLine(item.ToString());
Console.WriteLine("Cannot iterate!");
Console.WriteLine("Example 2");
Console.WriteLine("Example 3a");
var intArray = new int[] {1,2,3};
Console.WriteLine("Example 3b");
public static void Iterate<T>(T iterator)
where T: System.Collections.IEnumerable
foreach (var item in iterator)
Console.WriteLine(item.ToString());
public static void Iterate2<T>(T collection)
var enumerator = collection.GetEnumerator();
if (enumerator is IEnumerator)
while (enumerator.MoveNext())
var item = enumerator.Current;
Console.WriteLine(item.ToString());
public static IEnumerable<int> Iterator()
for (int i = 0; i < 10; i++)