ValueTask和ValueTask<TResult>有一个Preserve()方法,概括为“获取将来可能在任何时候使用的ValueTask”。
这意味着什么,我们什么时候应该使用它?这是否意味着“将来任何时候”都不能使用‘正常’ValueTask?如果是,为什么?
发布于 2022-03-03 21:10:49
文件不太清楚。来自来源:
/// <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封装的Task或IValueTaskSource (如果它是这样做的ValueTask )。否则,如果null代表的是完成,则为ValueTask。
public ValueTask Preserve() => _obj == null ? this : new ValueTask(AsTask());Preserve()返回一个新的ValueTask,表示它的底层任务,如果ValueTask表示Task或IValueTaskSource (即:_obj != null),或者如果ValueTask表示成功的同步完成,则返回它自己。这是必要的,因为_obj是内部的,不能进行外部测试。
https://stackoverflow.com/questions/71343745
复制相似问题