Что эквивалентно ValueTask для Task.CompletedTask? - PullRequest
3 голосов
/ 28 марта 2020

Я реализую IAsyncDisposable, что требует от меня вернуть ValueTask, но иногда мой метод dispose не имеет ничего общего. Как мне вернуться в этом случае?

В настоящий момент я возвращаю new ValueTask(Task.CompletedTask), который, кажется, работает, но поскольку задача valueTasks состоит в том, чтобы избежать создания ненужных объектов кучи, я уверен, что должно быть более простой и эффективный способ.

1 Ответ

3 голосов
/ 28 марта 2020

Все структуры имеют конструктор по умолчанию. Конструктор по умолчанию ValueTask создает заполненный ValueTask:

var completedValueTask = new ValueTask();

Или, альтернативно:

ValueTask completedValueTask = default;
...