Qual deveria ser o resultado da execução desse código?
using System;
using System.Threading.Tasks;
using static System.Console;
using static System.IO.File;
class Program
{
static void Main(string[] args)
{
Run();
ReadLine();
}
static void Run()
{
var task = ComputeFileLengthAsync(null);
WriteLine("Computing file length");
WriteLine(task.Result);
WriteLine("done!");
}
static async Task<int> ComputeFileLengthAsync(string fileName)
{
WriteLine("Before If");
if (fileName == null)
{
WriteLine("Inside");
throw new ArgumentNullException(nameof(fileName));
}
WriteLine("After");
using (var fileStream = OpenText(fileName))
{
var content = await fileStream.ReadToEndAsync();
return content.Length;
}
}
}
Dica: será impresso “Computing file length” no output.
Você sabe explicar o porquê? Que estratégia de implementação eu poderia seguir se eu quiser ter a exception quando chamar a função?