ValueTask与Task.CompletedTask等效吗? [英] What is the ValueTask equivalent of Task.CompletedTask?

查看:126
本文介绍了ValueTask与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆