【发布时间】:2019-01-22 01:35:15
【问题描述】:
我正在尝试使用 yield 并返回在异步任务中将 X 转换为 Y 的结果。但是,我在选择时遇到错误。 错误是:
错误 CS1942 select 子句中的表达式类型是 不正确。调用“Select”时类型推断失败。
public async Task<Result<dynamic>> GetYAsync(IEnumerable<X> infos)
{
return Task.WhenAll(from info in infos.ToArray() select async ()=>
{
yield return await new Y(info.Id, "Start");
});
}
【问题讨论】:
-
这部分很奇怪:{ yield return await new Y(info.Id, "Start"); });
-
不确定
yield在这里的作用。而return await只是添加了不必要的分层,如果这是方法中唯一的await。 -
而
Y也似乎是某种形式的等待,因为你awaiting 是构造一个的结果。我真的不知道你想在这里做什么。
标签: c# asynchronous task yield