Вот код ответа @ dcastro, измененный для C # 7.0 с именованными кортежами и декодированием кортежей, который упрощает обозначение:
public async void Method1()
{
// Version 1, named tuples:
// just to show how it works
/*
var tuple = await GetDataTaskAsync();
int op = tuple.paramOp;
int result = tuple.paramResult;
*/
// Version 2, tuple deconstruction:
// much shorter, most elegant
(int op, int result) = await GetDataTaskAsync();
}
public async Task<(int paramOp, int paramResult)> GetDataTaskAsync()
{
//...
return (1, 2);
}
Подробнее о новых именованных кортежах, литералах и фрагментах кортежей см. : https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/