。NET 4.6的Task.CompletedTask有什么意义?

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

[This blog post提到了新的Task API,包括.NET 4.6中引入的新的Task.CompletedTask属性。

为什么要添加?这比Task.FromResult(whatever)更好吗?

c# task .net-4.6
1个回答
41
投票

Task.FromResult(whatever)适用于Task<TResult>,但直到4.6为止,非通用任务一无所有。您可以将FromResult与一个虚拟值一起使用,并将其隐式转换为Task,但这会混淆意图(您并未真正返回任何异步value)并在其下分配对象(而CompletedTask可以缓存并在所有调用者之间共享)。

在当前(4.5.2和更早版本)的代码库中看到自定义静态完成的任务并不少见,因此,我认为将其合并到框架本身是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.