コードインスペクション: '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 年 6 月 12 日