using System.Collections.Generic
// 通过 Yield return 语句,您可以创建返回值集合的代码,而无需先在内存中创建集合。
// 编译器创建的代码会 “记住” 您在循环中的位置,并返回到该位置。
FUNCTION Start AS VOID
FOREACH nYear AS INT IN GetAllLeapYears(1896, 2040)
? "年", nYear, "是闰年。"
NEXT
Console.ReadLine()
RETURN
FUNCTION GetAllLeapYears(nMin AS INT, nMax AS INT) AS IEnumerable<INT>
FOR LOCAL nYear := nMin AS INT UPTO nMax
IF nYear % 4 == 0 .and. (nYear % 100 != 0 .or. nYear % 400 == 0)
YIELD RETURN nYear
END IF
IF nYear == 2012
YIELD EXIT // 跳出循环
ENDIF
NEXT