Yield:是一个关键字,通过状态机实现,充分体现了延迟加载的特性。
下面是一个实例代码,运行一下,会发现Yield的神奇之处。
下面是一个实例代码,运行一下,会发现Yield的神奇之处。
class Program { static void Main(string[] args) { { IEnumerable<int> results = CommonMethod(); results = YieldMethod(); } Console.WriteLine("*******************************"); { IEnumerable<int> results = CommonMethod(); foreach (var item in results) { Console.WriteLine(item); } } Console.WriteLine("*******************************"); { IEnumerable<int> results = YieldMethod(); foreach (var item in results) { Console.WriteLine(item); } } Console.ReadKey(); } public static IEnumerable<int> CommonMethod() { List<int> results = new List<int>(); int counter = 0; int result = 1; while (counter++ < 10) { Thread.Sleep(1000); Console.WriteLine($"获取{counter}次数据"); result = 2 * result; results.Add(result); } return results; } public static IEnumerable<int> YieldMethod() { int counter = 0; int result = 1; while (counter++ < 10) { Thread.Sleep(1000); Console.WriteLine($"获取{counter}次数据"); result = 2 * result; yield return result; } } }