如何选择异步委托的返回类型

问题描述 投票:2回答:1

我正在将异步委托传递给LINQ Select方法,我希望获得ValueTask的列表而不是ValueTask的列表。我该怎么做?示例:

Task

结果类型:System.Threading.Tasks.Task []

这是不可取的。我发现可以用异步方法替换异步委托来创建所需的列表,如下所示:

Task

结果类型:System.Threading.Tasks.ValueTask []

这有效,但很尴尬。有什么方法可以保持整洁的委托语法,并仍然获得我想要的var result = (new[] { 0 }).Select(async x => await Task.Yield()).ToArray(); Console.WriteLine($"Result type: {result.GetType()}");

c# async-await task-parallel-library
1个回答
1
投票

您可以像这样显式地编写价值任务

var result = (new[] { 0 }).Select(DoAsync).ToArray();
Console.WriteLine($"Result type: {result.GetType()}");
async ValueTask DoAsync(int arg)
{
    await Task.Yield();
}
© www.soinside.com 2019 - 2024. All rights reserved.