C# 迭代器(yield)
yield return 表示在迭代中下一个迭代时返回的数据,除此之外还有yield break, 其表示跳出迭代。
/// <summary>
/// 迭代器:Yield
/// </summary>
public class YieldDemo
{
/// <summary>
/// 想要迭代,必须返回 IEnumerable 类型, 使用迭代器之后会一个一个的取,按需取
/// </summary>
/// <returns></returns>
public IEnumerable<int> Power()
{
for (int i = 0; i < 10; i++)
{
yield return this.Get(i);
}
}
/// <summary>
/// 没有使用迭代器的,回去拿不查询好之后,在返回数据
/// </summary>
/// <returns></returns>
public IEnumerable<int> Common()
{
List<int> intList = new List<int>();
for (int i = 0; i < 10; i++)
{
intList.Add(this.Get(i));
}
return intList;
}
private int Get(int num)
{
Thread.Sleep(2000);
return num * DateTime.Now.Second;
}
}
迭代器的对比
// 迭代器 :比较
YieldDemo yieldDemo = new YieldDemo();
foreach (var item in yieldDemo.Power())
{
Console.WriteLine(item);
}
foreach (var item in yieldDemo.Common())
{
Console.WriteLine(item);
}