代码检查:异步迭代器调用未使用 '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日