Após a leitura de todo o artigo "Programação assíncrona" da Microsoft proposto e relembrar o uso e a forma de uso da programação assíncrona no trabalho (exatamente com o uso proposto pela Microsoft) eu levanto algumas perguntas:
Visto que o uso do async e await faz o método da classe principal aguardar a finalização do método chamado por await, na prática não tem o mesmo resultado porém com mais processamento pelo C# ("O que acontece nos bastidores") do que se todo o método já fosse executado de modo síncrono?
Dessa forma entendo que um bom uso é na computação paralela em que não há esse travamento do método principal ou que há mais de um método await sendo executado ao mesmo tempo. Neste caso, sei que ao passar uma classe como argumento é passado a referência, no entanto caso seja passado uma struct ou uma variável elementar (int, float etc) é realizado a cópia. Por acaso existe algum curso da alura que explora mais afundo essa questão específica?