मैं एक अंतर्निहित विशेषता की तलाश कर रहा था यह निर्दिष्ट करने के लिए कि एक प्रकार अपरिवर्तनीय है, और मुझे केवल System.ComponentModel.ImmutableObjectAttribute मिला।ImmutableObjectAttribute का उपयोग कैसे किया जाता है?
परावर्तक का उपयोग करके, मैंने जांच की कि इसका उपयोग कहाँ किया गया था, और ऐसा लगता है कि इसका उपयोग करने वाला एकमात्र सार्वजनिक वर्ग सिस्टम है। ड्रॉइंग.इमेज ... डब्ल्यूटीएफ? यह स्ट्रिंग, int या किसी भी प्रकार के आदिम प्रकारों पर इस्तेमाल किया जा सकता था, लेकिन छवि निश्चित रूप से अपरिवर्तनीय नहीं है, इसके आंतरिक स्थिति को बदलने के लिए कई तरीके हैं (उदाहरण के लिए ग्राफिक्स या बिटमैप.SetPixel विधि का उपयोग करना)।
तो बीसीएल में एकमात्र वर्ग जिसे स्पष्ट रूप से अपरिवर्तनीय घोषित किया गया है, उत्परिवर्तनीय है! या क्या मैं कुछ न कुछ भूल रहा हूं?
"यह नहीं कि ऑब्जेक्ट स्वयं अपरिवर्तनीय है" - दस्तावेज़ीकरण निर्दिष्ट करता है कि यह विशेषता "निर्दिष्ट करती है कि किसी ऑब्जेक्ट में संपादित होने में सक्षम कोई सबप्रोपर्टी नहीं है"। ऐसा लगता है कि आप जो कह रहे हैं वह दस्तावेज़ीकरण के साथ विरोधाभासी है। क्या आप समझाएँगे? – MasterMastic
@ केन, इस विशेषता का अर्थ है कि किसी ऑब्जेक्ट संपादक * का उपयोग करते समय ऑब्जेक्ट में * संपादित * होने के लिए कोई उप-गुण नहीं है * विजुअल स्टूडियो के फॉर्म डिज़ाइनर में से एक की तरह। इस गुण के बावजूद उन गुणों को अभी भी कोड से सेट या संशोधित किया जा सकता है। वर्तमान दस्तावेज के मुताबिक, मेरा जोर है: "यह विशेषता आमतौर पर प्रॉपर्टी विंडो * में * निर्धारित करने के लिए * एक विस्तार योग्य ऑब्जेक्ट को केवल पढ़ने के लिए ही प्रस्तुत की जाती है। इस प्रकार, यह संपत्ति * केवल डिज़ाइन समय * पर उपयोग की जाती है। " –