C # जेनरिक में, हम एक प्रकार के पैरामीटर के T
लिए एक डिफ़ॉल्ट निर्माणकर्ता के लिए एक बाधा की घोषणा कर सकते हैं , कह कर where T : new()
। हालांकि, इस तरह की कोई अन्य बाधाएं मान्य नहीं हैं - new(string)
उदाहरण के लिए, आदि।
भाषा के डिजाइन और / या कार्यान्वयन के दृष्टिकोण से, इसका कारण क्या है?
क्या कंस्ट्रक्टर्स के काम करने के तरीके में कुछ ऐसा है या जिस तरह से सिस्टम लागू किया गया है कि यह मना करता है (या कम से कम यह कठिन है)? यदि ऐसा है, तो ये क्या है? मैंने कहीं पढ़ने याद है कि default(T)
वास्तव में करने के लिए संकलित new T()
के लिए T : struct
। क्या यह इससे संबंधित है, हो सकता है?
या यह केवल एक डिजाइन निर्णय है जो भाषा को बहुत जटिल बनाने से बचने के लिए किया गया है?
new(string)
एक डिफ़ॉल्ट निर्माता बाधा नहीं है। आपका प्रश्न यह कहने के लिए समान है कि "विशिष्ट निर्माण हस्ताक्षरों की आवश्यकता क्यों नहीं है?" बहुत संभावना है क्योंकि इस तरह की बाधा विशेष रूप से उपयोगी नहीं होगी।