上代碼:
class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? //var list = Power(2, 8).ToList();
? ? ? ? ? ? var list = Power(2, 8);
? ? ? ? ? ? foreach (int i in list)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.Write("{0} \r\n", i);
? ? ? ? ? ? }
? ? ? ? ? ? Console.ReadKey();
? ? ? ? }
? ? ? ? public static IEnumerable<int> Power(int number, int exponent)
? ? ? ? {
? ? ? ? ? ? int result = 1;
? ? ? ? ? ? for (int i = 0; i < exponent; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? result = result * number;
? ? ? ? ? ? ? ? yield return result;
? ? ? ? ? ? }
? ? ? ? ? ? //Thread.Sleep(1000);
? ? ? ? ? ? yield return 3;
? ? ? ? ? ? //Thread.Sleep(1000);
? ? ? ? ? ? yield return 4;
? ? ? ? ? ? //Thread.Sleep(1000);
? ? ? ? ? ? yield return 5;
? ? ? ? }
? ? }
執(zhí)行結(jié)果:

如圖:當(dāng)取消睡眠代碼注釋時,前面2到256瞬間輸出,而輸出3、4、5都等待了1秒。若同時在list后面加ToList()方法后,會立即執(zhí)行所有返回值,耗時3秒多,反之瞬間執(zhí)行完成。