我最近一直在玩IAsyncEnumerables,有一件事我不明白它是如何在幕后工作的.
请考虑以下代码段:
private async Task Test()
{
var t = new List<int>();
await foreach (var number in Numbers().Take(5).ConfigureAwait(false))
{
t.Add(number);
}
}
int[] myIntArray = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
private async IAsyncEnumerable<int> Numbers()
{
foreach (var element in myIntArray)
{
yield return element;
}
}
所以让我烦恼的是,IAsyncEnumerable方法如何知道如何只执行5次,或者换句话说,它如何翻译.Take(5)方法,使其在执行时可以考虑传递的数字?