2013-07-21 2 views
6

मैं सी # से उपयोग करने के लिए एक एफ # इंटरऑप कक्षा लिख ​​रहा हूं।एफ # और सी # टुपल्स के बीच कैसे परिवर्तित करें?

type MyClass() = 
    member this.MyMethod (t: Tuple<int, int>) = 
     let meaningOfLife (t : int * int) = 42 
     meaningOfLife t 

इस कोड को निम्न त्रुटि के साथ संकलित करने के लिए विफल रहता है: मैंने सोचा था कि एफ # .NET टपल < से एक अंतर्निहित रूपांतरण था> प्रकार (seq के रूप में इलाज IEnumerable के समान), तो मैं निम्नलिखित कोड लिखा था त्रुटि FS0001: इस अभिव्यक्ति के प्रकार int int int होने की उम्मीद थी, लेकिन यहां टाइप टुपल

फिर सी # और एफ # (और पीछे) के बीच टुपल्स को कैसे परिवर्तित करें?

+0

दोनों प्रकार अलग हैं। आप 'अर्थऑफलाइफ (टी.आईटीएम 1, टी.आईटीएम 2) लिख सकते हैं। – josejuan

उत्तर

8

यदि आप .NET 4.0 और ऊपर लक्षित कर रहे हैं, तो आपको ऑब्जेक्ट टुपल निर्दिष्ट करने की आवश्यकता नहीं है। एफ # टुपल्स स्वचालित रूप से टुपल में संकलित हो जाते हैं। आप इसका उपयोग कर सकते हैं:

type MyClass() = 
    member this.MyMethod (t: int * int) = 
    let meaningOfLife (t : int * int) = 42 
    meaningOfLife t 

और इसे सी # से ठीक काम करना चाहिए।

+0

बेशक! वह मेरा मूर्ख था। जवाब के लिए धन्यवाद। –

+0

फिर भी, मुझे वास्तव में यह नहीं मिलता है कि क्यों प्रकार का अनुमान .NET tuple और F # tuple अलग होने का व्यवहार करता है। – colinfang

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