Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1203 of 1492 menu
◀ ▶

IAsyncEnumerable

IAsyncEnumerable<T> строят через async IAsyncEnumerable и yield return. Перебор вызывает MoveNextAsync и освобождает IAsyncEnumerator. Элемент читают из Current.

Синтаксис

await foreach (T item in asyncEnumerable) { }

Пример

Давайте сложить элементы через await foreach:

using System; using System.Collections.Generic; using System.Threading.Tasks; class Program { static async Task Main() { int sum = 0; await foreach (int x in Seq()) { sum += x; } int res = sum; Console.WriteLine(res); } static async IAsyncEnumerable<int> Seq() { yield return 1; yield return 2; await Task.CompletedTask; } }

Результат выполнения кода:

3

Пример

Давайте посчитать, сколько раз прошли цикл:

using System; using System.Collections.Generic; using System.Threading.Tasks; class Program { static async Task Main() { int count = 0; await foreach (int _ in Seq()) { count++; } int res = count; Console.WriteLine(res); } static async IAsyncEnumerable<int> Seq() { yield return 1; yield return 2; await Task.CompletedTask; } }

Результат выполнения кода:

2

Пример

Давайте взять только первый элемент:

using System; using System.Collections.Generic; using System.Threading.Tasks; class Program { static async Task Main() { int res = 0; await foreach (int x in Seq()) { res = x; break; } Console.WriteLine(res); } static async IAsyncEnumerable<int> Seq() { yield return 1; yield return 2; await Task.CompletedTask; } }

Результат выполнения кода:

1

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить