web-dev-qa-db-ja.com

C#7タプルと非同期

古い形式:

private async Task<Tuple<SomeArray[], AnotherArray[], decimal>>         
GetInvoiceDetailAsync(InvoiceHead invoiceHead) { ... }

新しいタプル形式を使用してC#7でそれを行うにはどうすればよいですか?

33
Oszkar

ステップ1:ValueTuple nugetパッケージをプロジェクトに追加します。

ステップ2:Lucasがコメントで述べているように、構文を次のように変更します。

private async Task<(SomeArray[], AnotherArray[], decimal)>GetInvoiceDetailAsync(
    InvoiceHead invoiceHead) 
{ 
    ...
    return (x, y, z); 
}

ただし、次の行に沿って、これらのタプルアイテムに名前を追加することもできます。

private async Task<(SomeArray[] x, AnotherArray[] y, decimal z)>GetInvoiceDetailAsync(
    InvoiceHead invoiceHead) 
{ 
    ... 
    return (x, y, z); 
}

そして、Item1Item2、およびItem3ではなく、それらの名前としてそれらにアクセスできます。

56
David Arno