Eu quero usar ValueTask
. Encontrei em algum lugar que "um ValueTask pode ser aguardado apenas uma vez". Não posso esperar pelo método GetMoney
várias vezes ou o quê? Se sim, como devo alterar meu código?
public class CreditCardService
{
private Dictionary<int, int> _cache = new Dictionary<int, int>()
{
{ 1, 500 },
{ 2, 600 }
};
public async ValueTask<int> GetMoney(int userId)
{
if (_cache.ContainsKey(userId))
{
return _cache[userId];
}
//some asynchronous operation:
Random rnd = new Random();
var money = rnd.Next(100);
_cache[userId] = money;
return await Task.FromResult(money);
}
}
var creditCardService = new CreditCardService();
Console.WriteLine(await creditCardService.GetMoney(1));
Console.WriteLine(await creditCardService.GetMoney(3));
Console.WriteLine(await creditCardService.GetMoney(3));