2017-03-09 13 views
16

旧形式:C#7タプル&非同期

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

あなたが行うことができますどのように新しいタプル形式のC#7で?

+7

'Task <(SomeArray []、AnotherArray []、decimal)>' –

答えて

28

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

ステップ2:

private async Task<(SomeArray[] x, AnotherArray[] y, decimal z)>GetInvoiceDetailAsync(
    InvoiceHead invoiceHead) 
{ 
    ... 
    return (x, y, z); 
} 
:あなたも、その後の線に沿って、それらのタプル項目に名前を追加することができますけれども

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

注:ルーカスは、彼のコメントで述べているように構文を変更

Item1,Item2Item3ではなく、それらの名前にアクセスできます。

+3

'Tuple <>'文を含まないGeneric引数も変更してはいけませんか? – Icepickle

+0

@Icepickle、今私はそれをやろうと思ったので混乱している。コピーの貼り付けエラー、私はだと思います。今修正されました。 –

+0

> "これらのタプル項目に名前を追加することもできますが、" 私はこれを試しましたが、 'Task'の' .Wait() 'の後ろに名前付きフィールドの代わりに' Item1'/public Async staticタスク<文字列ステータス、T結果> GetObjectAsync (文字列フォルダ、文字列ファイル名) ' – ornic