好久没写C# 今天心血来潮突然看了下C#的代码 看到了一个yield 想知道这个是什么用途的情况下才有了这篇文章
百度了一下这个东西出来代码都是写了一堆的东西,看着太累人了去官网看了下大致知道这个是什么用的了
简单的说就是记录你上一次执行的位置,等你下次再执行这个函数就会跳到上次的记录点继续执行
下面一个小例子并给代码加了备注,自己看下备注说明吧
using System;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Task.Run(async ()=> {
await foreach (var number in GenerateSequence())
{
Console.WriteLine(number);
}
});
Console.Read();
}
public static async System.Collections.Generic.IAsyncEnumerable<int> GenerateSequence()
{
for (int i = 0; i < 20; i++)
{
await Task.Delay(100);
//yield return这个的作用就是每当代码执行到这里的时候返回
//而当GenerateSequence函数再次被调用的时候会从上一次的yield开始接着往下走
yield return i;
//yield break的作用就是提前结束
//当GenerateSequence函数再次被调用会重新开始循环
if (i == 18)
yield break;
}
}
}
}