2017-03-09 13 views
16

पुराने प्रारूप:सी # 7 टपल और async

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

आप कर सकते हैं कैसे है कि सी # 7 नए tuples प्रारूप के साथ में?

+7

'कार्य <(कुछअरे [], एक और ऐरे [], दशमलव)>' –

उत्तर

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); 
} 

और फिर आप उन्हें Item1, Item2 और Item3 के बजाय उन नामों के रूप में एक्सेस कर सकते हैं।

+3

क्या आप जेनेरिक तर्क भी नहीं बदलना चाहिए जिसमें अब 'टुपल <>' कथन शामिल नहीं है? – Icepickle

+0

@Icepickle, अब मैं उलझन में हूं क्योंकि मैंने सोचा कि मैंने ऐसा किया है। पेस्ट त्रुटि कॉपी करें, मुझे लगता है कि । अब तय –

+0

> "ध्यान दें कि फिर भी आप उन tuple आइटम्स में नाम जोड़ सकते हैं" मैंने कोशिश की, लेकिन 'टास्क 'के लिए' .Wait() 'के बाद नामित फ़ील्ड के बजाय केवल' आइटम 1' /' Item2' ' सार्वजनिक एसिंक स्थिर कार्य <(स्ट्रिंग स्थिति, टी परिणाम)> GetObjectAsync (स्ट्रिंग फ़ोल्डर, स्ट्रिंग फ़ाइल नाम) ' – ornic

संबंधित मुद्दे