2017-03-09 44 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[], 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); 
} 

然後您可以將它們作爲這些名稱訪問,而不是Item1Item2Item3

+3

你不應該改變泛型參數,它不再包含'Tuple <>'語句嗎? – Icepickle

+0

@Ippickle,現在我很困惑,因爲我以爲我那樣做了。複製粘貼錯誤,我認爲。現在修復。 –

+0

>「注意雖然你也可以給這些元組項添加名字」 我試過這個,但是''.Wait()''後面的'Task'只有'Item1' /'Item2'而不是'公共異步靜態任務<(字符串狀態,T結果)> GetObjectAsync (字符串文件夾,字符串文件名)' – ornic