static void Main()
{
DaysOfTheWeek days = new DaysOfTheWeek();
foreach (string day in days)
{
Console.Write(day + " ");
}
// Output: Sun Mon Tue Wed Thu Fri Sat
Console.ReadKey();
}
public class DaysOfTheWeek : IEnumerable
{
private string[] days = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
public IEnumerator GetEnumerator()
{
for (int index = 0; index < days.Length; index++)
{
// Yield each day of the week.
yield return days[index];
}
}
}
Что происходит в цикле foreach. Он вызывает функцию GetEnumerator, для каждой итерации или foreach заменяется функцией GetEnumerator? В этом случае сложность идет на O (n2)?Работа IEnumerator в C#
Возможный дубликат [В C#, foreach чисто «синтаксический сахар»? Или есть что-то более глубокое об этом?] (Http://stackoverflow.com/questions/5816776/in-c-is-foreach-purely-a-syntactic-sugar-or-is-there-anything-deeper-about) –
Я не понимаю, как это отвечает на вопрос @Janne –