Проверить эту программу:для каждого цикла в методе итератора
static class Program
{
static void Main()
{
GetLinks();
Console.WriteLine("Program failed!");
}
static IEnumerable<string> GetLinks()
{
throw new Exception();
foreach (var item in new string[] { })
yield return item;
}
}
Это очень странно, но результатом этой программы является Program failed!
, то есть функция GetLinks
даже не называется.
Какое объяснение этого поведения?
и вот [документация] (https://msdn.microsoft.com/en-us/library/9k7k7cf0 .aspx): _ "... Техническая реализация: вызов MyIteratorMethod не выполняет тело метода. Вместо этого вызов возвращает IEnumerable в переменную элементов ..." _. Так как тело метода даже не выполнено, исключение не возникает. –