2009-02-22 13 views
11

क्यों संरचना में पैरामीटर रहित कन्स्ट्रक्टर नहीं हो सकता है? सीएलआर के लिए ऐसा करने में क्या समस्या है या इसकी अनुमति क्यों नहीं है? कृपया इसे समझाएं क्योंकि मुझे यह समझ में नहीं आता है।क्यों संरचना में पैरामीटर रहित कन्स्ट्रक्टर नहीं हो सकता

+0

एक डुप्लिकेट http://stackoverflow.com/questions/333829 है, "मैं .NET में किसी संरचना के लिए डिफ़ॉल्ट कन्स्ट्रक्टर को परिभाषित क्यों नहीं कर सकता" –

+0

डुप्लिकेट: [मैं डिफ़ॉल्ट डिज़ाइनर को परिभाषित क्यों नहीं कर सकता .NET में एक संरचना] (http://stackoverflow.com/questions/333829/why-cant-i-define-a-default-constructor-for-a-struct-in-net) –

उत्तर

14

मेरे पास एक स्पष्ट पैरामीटर रहित कन्स्ट्रक्टर नहीं हो सकता है, केवल अंतर्निहित, जो सभी सदस्यों को उनके डिफ़ॉल्ट में प्रारंभ करता है।

हालांकि CLR यह अनुमति देता है, सी # structs एक डिफ़ॉल्ट parameterless निर्माता के लिए अनुमति नहीं है। का कारण यह है कि, मान प्रकार के लिए, डिफ़ॉल्ट रूप से संकलित नहीं करता है और न ही डिफ़ॉल्ट कन्स्ट्रक्टर उत्पन्न करता है, न ही वे डिफ़ॉल्ट कन्स्ट्रक्टर को कॉल करते हैं। तो, यदि आप डिफ़ॉल्ट कन्स्ट्रक्टर को परिभाषित करने के लिए भी हुए हैं, तो यह नहीं होगा और यह केवल आपको भ्रमित करेगा। ऐसी समस्याओं से बचने के लिए, C# कंपाइलर उपयोगकर्ता द्वारा डिफ़ॉल्ट कन्स्ट्रक्टर की परिभाषा को अस्वीकार करता है। और क्योंकि यह एक डिफ़ॉल्ट निर्माता उत्पन्न नहीं करता है, तो आप क्षेत्रों जब उन्हें परिभाषित करने शुरू नहीं किया जा सकता है, ...

0

काफी एक उचित स्पष्टीकरण में पाया जा सकता: http://en.csharp-online.net/CSharp_FAQ:_Why_must_struct_constructors_have_at_least_one_argument

का हवाला देते हुए: ".NET कॉमन लैंग्वेज रनटाइम (सीएलआर) गारंटी नहीं देता है कि पैरामीटर रहित रचनाकारों को बुलाया जाएगा। यदि structs को डिफ़ॉल्ट, पैरामीटर रहित कन्स्ट्रक्टर रखने की अनुमति थी, तो यह संकेत होगा कि डिफ़ॉल्ट कन्स्ट्रक्टर हमेशा कॉल किए जाएंगे। फिर भी, सीएलआर बनाता है ऐसी कोई गारंटी नहीं है। "

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

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