i-am-waiting

Una delle cose “noiose“ quando si scrive un’applicazione, ad esempio, Console è quando nel metodo Main si deve avere a che fare con codice asincrono, si finisce per scrivere una cosa del tipo:

public void Main(string[] args)
{
   MainAsync(args).GetAwaiter().GetResult();
}

public Task MainAsync(string[] args)
{
   return Task.CompletedTask;
}

che ultimamente si può ulteriormente accorciare in:

public void Main(string[] args) => MainAsync(args).GetAwaiter().GetResult();

public Task MainAsync(string[] args)
{
   return Task.CompletedTask;
}

Usando i nuovi expression-bodied members. Con C# 7.1 si può finalmente eliminare la parte sincrona, limitandosi a scrivere:

public static async Task Main(string[] args)
{
   return Task.CompletedTask;
}

Le funzionalità nuove sono opt-in e devono essere attivate nel file di progetto aggiungendo ad esempio:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>