티스토리 뷰


// C# : Iterator

using System;
using System.Collections;

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

foreach (string day in weekDays)
{
Console.WriteLine(day);
}

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

IEnumerator myEnumerator = weekDays.GetEnumerator();

while (myEnumerator.MoveNext())
{
Console.WriteLine(myEnumerator.Current);
}

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

myEnumerator.Reset(); // No Exception occurs

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Sun

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Mon

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Tue

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Wed

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Thu

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Fri

Console.WriteLine(myEnumerator.MoveNext()); // True
Console.WriteLine(myEnumerator.Current); // Sat

Console.WriteLine(myEnumerator.MoveNext()); // False
Console.WriteLine(myEnumerator.Current); // IndexOutOfRangeException

Console.WriteLine("---- End of 3rd iteration ----");
}
}

class DaysOfTheWeek : IEnumerable
{
public IEnumerator GetEnumerator()
{
return new DaysEnumerator();
}
}

class DaysEnumerator : IEnumerator
{
private string[] days = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
int index;

public DaysEnumerator()
{
Reset();
}

public object Current
{
get
{
return days[index];
}
}

public bool MoveNext()
{
index++;
return index < days.Length;
}

public void Reset()
{
index = -1;
}
}
}

/* Output
Sun
Mon
Tue
Wed
Thu
Fri
Sat
---- End of 1st iteration ----
Sun
Mon
Tue
Wed
Thu
Fri
Sat
---- End of 2nd iteration ----
True
Sun
True
Mon
True
Tue
True
Wed
True
Thu
True
Fri
True
Sat
False
Unhandled Exception: System.IndexOutOfRangeException
*/


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함