首页 新闻 搜索 专区 学院

C#中ValueTask<T>与Task<T>的区别是什么?

0
悬赏园豆:30 [已解决问题] 解决于 2018-07-10 15:24

C# 7.0引入了ValueTask<T>,它与Task<T>的区别是什么?在什么场合使用它?

C#
dudu的主页 dudu | 高人七级 | 园豆:39034
提问于:2018-06-09 15:44
< >
分享
最佳答案
0
收获园豆:30
骑着毛驴去纽约 | 初学一级 |园豆:85 | 2018-07-10 14:45

今天发现了一篇将 ValueTask 与 Task 的区别讲的非常清楚的博文 —— Asynchronous Programming in .NET – Benefits and Tradeoffs of Using ValueTask

dudu | 园豆:39034 (高人七级) | 2018-08-03 17:43
dudu | 园豆:39034 (高人七级) | 2018-09-21 22:51

@dudu: 针对这个问题,微软终于出手了:Understanding the Whys, Whats, and Whens of ValueTask

dudu | 园豆:39034 (高人七级) | 2018-11-08 22:17
其他回答(1)
0

是不是意味着 大部分 常规编程中, ValueTask<T> 的使用 频率 高于 Task<T>了,如果大多数时候我们都会等待方法的执行结果

死神的背影 | 园豆:658 (小虾三级) | 2019-05-31 13:42

ValueTask是Struct ,Task是Class,用途不同。如果只是同步方法返回简单的值类型,那么用 ValueTask是最好的 。然而需要异步等待执行,用到了 Await的时候,因为不知道await之后,是不是和执行await的是同一个线程,所以需要用基于stack的类型 Task来共享数据,这个时候只能用Task。

支持(1) 反对(0) Code_Song | 园豆:54 (初学一级) | 2019-10-03 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册