क्यों सी # के डिजाइनरों ने ऐसा कुछ करने की अनुमति नहीं दी?सी # में कोई घोषणात्मक अपरिवर्तनीयता क्यों नहीं है?
public readonly class ImmutableThing
{
...
}
सुरक्षित बहु सूत्रण के लिए सबसे महत्वपूर्ण तरीकों में से एक अपरिवर्तनीय वस्तुओं/वर्गों का प्रयोग होता है, फिर भी वहाँ अपरिवर्तनीय के रूप में एक वर्ग घोषित करने के लिए कोई रास्ता नहीं है। मुझे पता है कि मैं इसे उचित कार्यान्वयन से अपरिवर्तनीय बना सकता हूं लेकिन कक्षा घोषणा द्वारा इसे लागू करने से यह इतना आसान और सुरक्षित हो जाएगा। एक वर्ग को अपरिवर्तनीय के रूप में टिप्पणी करना सबसे अच्छा "दरवाजा प्रोप" समाधान है।
कक्षा घोषणा पर एक नज़र डालें और आपको तुरंत पता चलेगा कि यह अपरिवर्तनीय था। अगर आपको किसी और के कोड को संशोधित करना पड़ा तो आपको पता चलेगा कि एक वर्ग इरादे से परिवर्तन की अनुमति नहीं देता है। मैं केवल फायदे देख सकता हूं लेकिन मुझे विश्वास नहीं है कि इससे पहले कोई भी इस बारे में सोचा नहीं था। तो क्यों समर्थित नहीं है?
संपादित
कुछ लोग कहते हैं यह बहुत महत्वपूर्ण विशेषता नहीं है, लेकिन है कि वास्तव में मुझे समझाने नहीं है। मल्टीकोर प्रोसेसर दिखाए गए क्योंकि आवृत्ति द्वारा प्रदर्शन में वृद्धि ने दीवार को मारा। सुपरकंप्यूटर भारी मल्टीप्रोसेसर मशीनें हैं। समांतर प्रसंस्करण अधिक से अधिक महत्वपूर्ण है और प्रदर्शन में सुधार के मुख्य तरीकों में से एक है। .NET में मल्टीथ्रेडिंग और समांतर प्रसंस्करण के लिए समर्थन महत्वपूर्ण है (विभिन्न लॉक प्रकार, थ्रेड पूल, कार्य, एसिंक कॉल, समवर्ती संग्रह, अवरुद्ध संग्रह, समानांतर foreach, PLINQ और इसी तरह) और यह मुझे सबकुछ लगता है जो आपको समानांतर लिखने में मदद करता है कोड आसानी से एक किनारे देता है। भले ही यह लागू करने के लिए तुच्छ नहीं है।
क्योंकि ऐसा नहीं है। हालांकि अच्छा होगा, और यदि वे भाषा को बढ़ाना चाहते हैं तो वे लाइन के नीचे खिड़कियां खोलेंगे। –
क्या यह 'संरचना' नहीं है? (मूल्य semantics के साथ इकाई की तरह एक वर्ग) – FishBasketGordo
@FishBasketGordo, नहीं। –