2011-04-07 14 views
5

ग्रीटिंग्स ओवरफ्लॉवर,क्या सी की इनलाइन अज्ञात संरचना परिभाषा के लिए समकक्ष सी # वाक्यविन्यास है?

मुझे पता है कि हम सी में परिवर्तनीय घोषणा के साथ एक संरचना इनलाइन परिभाषित कर सकते हैं ताकि संरचना प्रकार इस चर के लिए विशिष्ट हो। यह अकेले प्रकार को परिभाषित करने के बजाय वैरिएबल को उस संरचना प्रकार के घोषित करने की बजाय है। क्या यह सी # में संभव है?

धन्यवाद!

+9

मैं वास्तव में कुछ सी कोड देखने की उम्मीद कर रहा था। हां, उम्मीद पूरी तरह से मुलाकात नहीं की गई है, और इस प्रकार मैं बड़ी निराशा से दूर हूं। – BoltClock

+0

एक उदाहरण अच्छा होगा। इसके अलावा, आपको ऐसा करने की आवश्यकता क्यों है, शायद सी # में समस्या को हल करने का एक और तरीका है? –

+4

हां, यह सी # में संभव है, लेकिन यह इस तरह लिखा गया है। – Kobi

उत्तर

14

यह सी # में संभव नहीं है, फिर भी आप इस तरह एक गुमनाम प्रकार का एक उदाहरण परिभाषित कर सकते हैं:

var x = new { SomeField = 1, SomeOtherField = "Two" }; 

यह प्रभावी रूप से एक ही हो सकता है, यदि आप एक प्रकार का एक उदाहरण है कि उस के लिए विशिष्ट है दे रही है परिवर्तनीय और चर के दायरे के बाहर उपयोग नहीं किया जा सकता है।

+0

** नोट: * * अज्ञात प्रकारों को वापस नहीं किया जा सकता है या अन्य तरीकों से पारित नहीं किया जा सकता है, यानी वे केवल उस पद्धति के दायरे में मौजूद हैं जो उन्हें परिभाषित किया गया है। कक्षा स्तर पर अज्ञात प्रकार का चर होना संभव नहीं है। –

+1

@Daniel: सच है, हालांकि मुझे पूरा यकीन है कि सी में अज्ञात structs पर और वास्तव में किसी भी स्थैतिक रूप से टाइप की गई भाषा के लिए समान या समकक्ष प्रतिबंध लागू होते हैं। "अगर इसका कोई नाम नहीं है, तो आपको इसका उल्लेख करने की अनुमति नहीं है"। समझ में आता है। – Avish

+0

@ डैनियल - असल में, आप इसे एक सामान्य विधि में पास कर सकते हैं, लेकिन यह बहुत बदसूरत है। इसे * अन्य * अज्ञात प्रकारों के साथ एक ही फ़ील्ड के साथ साझा किया जाएगा, लेकिन फिर, बहुत बढ़ियापन। लेकिन जाहिर है, कक्षा के स्तर में नहीं - अगर सी ++ इसे अनुमति देता है, तो मुझे नहीं लगता कि सी # में कुछ भी समान है। – Kobi

1

सरल उत्तर: नहीं, यह संभव नहीं है।

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