Task.CompletedTask 的 ValueTask 等价物是什么?
What is the ValueTask equivalent of Task.CompletedTask?
我正在实施 IAsyncDisposable
,这需要我 return 一个 ValueTask
,但有时我的 dispose 方法无关。在这种情况下我应该如何return?
目前我正在 returning new ValueTask(Task.CompletedTask)
这似乎可行,但由于 valueTasks 的目的是避免创建不必要的堆对象,我相信应该有一个更简单和更有效的方法。
所有结构都有默认构造函数。 ValueTask
的默认构造函数创建一个完整的 ValueTask
:
var completedValueTask = new ValueTask();
或者:
ValueTask completedValueTask = default;
更新: official documentation 已用以下注释更新:
An instance created with the parameterless constructor or by the default(ValueTask)
syntax (a zero-initialized structure) represents a synchronously, successfully completed operation.
.NET 5.0:
您可以使用 ValueTask.CompletedTask
.
我正在实施 IAsyncDisposable
,这需要我 return 一个 ValueTask
,但有时我的 dispose 方法无关。在这种情况下我应该如何return?
目前我正在 returning new ValueTask(Task.CompletedTask)
这似乎可行,但由于 valueTasks 的目的是避免创建不必要的堆对象,我相信应该有一个更简单和更有效的方法。
所有结构都有默认构造函数。 ValueTask
的默认构造函数创建一个完整的 ValueTask
:
var completedValueTask = new ValueTask();
或者:
ValueTask completedValueTask = default;
更新: official documentation 已用以下注释更新:
An instance created with the parameterless constructor or by the
default(ValueTask)
syntax (a zero-initialized structure) represents a synchronously, successfully completed operation.
.NET 5.0:
您可以使用 ValueTask.CompletedTask
.