首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueTask.Preserve()的意义是什么?

ValueTask.Preserve()的意义是什么?
EN

Stack Overflow用户
提问于 2022-03-03 20:58:52
回答 1查看 340关注 0票数 4

ValueTaskValueTask<TResult>有一个Preserve()方法,概括为“获取将来可能在任何时候使用的ValueTask”。

这意味着什么,我们什么时候应该使用它?这是否意味着“将来任何时候”都不能使用‘正常’ValueTask?如果是,为什么?

EN

回答 1

Stack Overflow用户

发布于 2022-03-03 21:10:49

文件不太清楚。来自来源

代码语言:javascript
复制
/// <summary>null if representing a successful synchronous completion, 
/// otherwise a <see cref="Task"/> or a <see cref="IValueTaskSource"/>.</summary>
internal readonly object? _obj;

ValueTask内部声明一个可为空的容器对象,以保存ValueTask封装的TaskIValueTaskSource (如果它是这样做的ValueTask )。否则,如果null代表的是完成,则为ValueTask

代码语言:javascript
复制
public ValueTask Preserve() => _obj == null ? this : new ValueTask(AsTask());

Preserve()返回一个新的ValueTask,表示它的底层任务,如果ValueTask表示TaskIValueTaskSource (即:_obj != null),或者如果ValueTask表示成功的同步完成,则返回它自己。这是必要的,因为_obj是内部的,不能进行外部测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71343745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档