ReSharper 2026.1 Help

代码检查:异步迭代器调用未使用 'await foreach'

此检查会报告调用异步迭代器但忽略其结果的情况。 调用异步迭代器方法并不会像许多开发者预期的那样直接执行。 如需使用,必须遍历其结果,通常使用 await foreach

示例

using System.Collections.Generic; class C { public void Print() { ProduceAsync(); } public async IAsyncEnumerable<int> ProduceAsync() { yield return 42; } }
using System.Collections.Generic; using System.Threading.Tasks; class C { public async Task Print() { await foreach (var item in ProduceAsync()) item; } public async IAsyncEnumerable<int> ProduceAsync() { yield return 42; } }

快速修复

快速修复可以将该调用重写为 await foreach ,并在需要时使包含的方法变为异步方法。 之后,迭代器才会被实际消费。

2026年 5月 8日