使用yield返回集合数据
使用yield能将返回值一个一个返回回去,然后接收的地方先进行处理,处理完,等下一个返回值回来后再处理下一个。
static void Main(string[] args)
{
foreach (var arg in GetStrings())
{
Console.WriteLine(arg);
}
Console.ReadLine();
}
static IEnumerable<string> GetStrings()
{
yield return "1";
Console.WriteLine("1返回去了");
yield return "2";
Console.WriteLine("2返回去了");
yield return "3";
Console.WriteLine("3返回去了");
}
执行结果:
1
1返回去了
2
2返回去了
3
3返回去了
在async修饰的方法中使用yield
则返回值类型改为IAsyncEnumerable
static async Task Main(string[] args)
{
await foreach (var arg in GetStrings())
{
Console.WriteLine(arg);
}
Console.ReadLine();
}
static async IAsyncEnumerable<string> GetStrings()
{
yield return "1";
Console.WriteLine("1返回去了");
yield return "2";
Console.WriteLine("2返回去了");
yield return "3";
Console.WriteLine("3返回去了");
}