我有以下方法:
public async IEnumerable<string> GetListDriversAsync()
{
var drives = await graphClient.Drive.Root.Children.Request().GetAsync();
foreach (var d in drives)
yield return d.ToString();
}
但编译器错误说:
“异步的返回类型必须为 void、Task 或 Task<T>
"
当方法是异步时,如何返回 IEnumerable?
另一种方法是可能的C# 8 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/async-streams。它用IAsyncEnumerable https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.iasyncenumerable-1?view=dotnet-plat-ext-3.0.
public async IAsyncEnumerable<string> GetListDriversAsync()
{
var drives = await graphClient.Drive.Root.Children.Request().GetAsync();
foreach (var d in drives)
yield return d.ToString();
}
它会稍微改变您的签名,这可能是(也可能不是)您的选择。
Usage:
await foreach (var driver in foo.GetListDriversAsync())
{
Console.WriteLine(driver );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)