Почему yield return возвращает все значения?

Как эта функция выводит в консоль все три значения, там же return:

Так происходит потому что функция GetLetters() создает перечисление по объектам символьного типа, а оператор yield указывает компилятору какое значение на какой итерации должно возвращаться, и на каждой последующей итерации выполнение продолжается со следующей итерации.