Series

Iterator [C#] class Count : IEnumerable<string> - GetEnumerator

More Code 2018. 6. 15. 20:16


// C# : Iterator

using System;
using System.Collections;
using System.Collections.Generic;

namespace Iteration
{
class Program
{
static void Main(string[] args)
{
Count myCount = new Count();

IEnumerator<string> genericEnumerator = myCount.GetEnumerator();

Console.WriteLine(genericEnumerator.MoveNext()); // True
Console.WriteLine(genericEnumerator.Current); // one

Console.WriteLine(genericEnumerator.MoveNext()); // True
Console.WriteLine(genericEnumerator.Current); // two

Console.WriteLine(genericEnumerator.MoveNext()); // True
Console.WriteLine(genericEnumerator.Current); // three

Console.WriteLine(genericEnumerator.MoveNext()); // False
Console.WriteLine(genericEnumerator.Current); // three

Console.WriteLine("---- End of 1st iteration ----");

IEnumerator objectiveEnumerator = myCount.GetEnumerator();

Console.WriteLine(objectiveEnumerator.MoveNext()); // True
Console.WriteLine(objectiveEnumerator.Current); // one

Console.WriteLine(objectiveEnumerator.MoveNext()); // True
Console.WriteLine(objectiveEnumerator.Current); // two

Console.WriteLine(objectiveEnumerator.MoveNext()); // True
Console.WriteLine(objectiveEnumerator.Current); // three

Console.WriteLine(objectiveEnumerator.MoveNext()); // False
Console.WriteLine(objectiveEnumerator.Current); // three

Console.WriteLine("---- End of 2nd iteration ----");
}
}

class Count : IEnumerable<string>
{
public IEnumerator<string> GetEnumerator()
{
yield return "one";
yield return "two";
yield return "three";
}

IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
}

/* Output
True
one
True
two
True
three
False
three
---- End of 1st iteration ----
True
one
True
two
True
three
False
three
---- End of 2nd iteration ----
*/