Является ли правильным вариантом использования ValueTask и Task на C #

Я пытаюсь понять правильное использование Task vs ValueTask в .NetCore2.0 (+) или C # 7.0 (+)

Задача —

  1. Типы классов / объектов и использование кучи памяти
  2. следует использовать в методе async, когда операция завершится в итоге бывший. сетевой звонок

ValueTask —

  1. Тип структуры / значения и использует стековую память
  2. следует использовать в методе async, когда вывод операции уже находится в памяти или операция завершается немедленно

Исходя из этого, моя реализация оправдывает оба использования?

public class Utility
{
    public async ValueTask<int> Add(int n1, int n2)
    {
        //immediately available
        return await Task.Run(() => (n1 + n2))
                     .ConfigureAwait(false);
    }

    public async Task<string> Get(string email)
    {
        //eventually available
        string user = await Task.Run(() => GetFromDb(email))
                            .ConfigureAwait(false);

         string GetFromDb(string email)
        {
            // do a database call over network 
            // & get the user based on the input email
            return "User from Db";
        }

        return user;
    }
}

Просмотрите и предложите. Спасибо!

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *