ValueTask与Task.CompletedTask等效吗? [英] What is the ValueTask equivalent of Task.CompletedTask?
问题描述
我正在实现IAsyncDisposable
,这要求我返回一个ValueTask
,但是有时我的dispose方法无关.在这种情况下我该如何退货?
I am implementing IAsyncDisposable
which requires me to return a ValueTask
, but sometimes my dispose method has nothing to do. How should I return in this case?
此刻我返回的new ValueTask(Task.CompletedTask)
似乎有效,但是既然valueTasks的目的是避免创建不必要的堆对象,所以我相信应该有一种更简单,更有效的方法.
At the moment I'm returning new ValueTask(Task.CompletedTask)
which seems to work but since the point of valueTasks is to avoid creating unnecessary heap objects, I'm sure there should be a simpler and more efficient way.
推荐答案
所有结构都具有默认构造函数. ValueTask
的默认构造函数会创建一个已完成ValueTask
:
All structs have a default constructor. The default constructor of ValueTask
creates a completed ValueTask
:
var completedValueTask = new ValueTask();
或者:
ValueTask completedValueTask = default;
这篇关于ValueTask与Task.CompletedTask等效吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!