C # के लिए सामान्य मार्गदर्शन हमेशा एक सार्वजनिक क्षेत्र पर एक संपत्ति का उपयोग करना है। यह समझ में आता है- एक क्षेत्र को उजागर करने से, आप बहुत सारे कार्यान्वयन विवरण को उजागर कर रहे हैं। किसी प्रॉपर्टी के साथ, आप उस डिटेल को इनकैप्सुलेट कर देते हैं ताकि वह उपभोग कोड से छिप जाए, और इंटरफ़ेस में बदलाव से कार्यान्वयन में परिवर्तन किया जाता है।
हालाँकि, मैं सोच रहा हूँ कि क्या कभी-कभी इस नियम का एक अपवाद अपवाद होता है जब readonly
खोजशब्द के साथ व्यवहार किया जाता है । इस कीवर्ड को किसी सार्वजनिक क्षेत्र में लागू करके, आप एक अतिरिक्त गारंटी देते हैं: अपरिवर्तनीयता। यह केवल एक कार्यान्वयन विवरण नहीं है, अपरिवर्तनीयता एक ऐसी चीज है जिसके बारे में एक उपभोक्ता को दिलचस्पी हो सकती है। किसी readonly
क्षेत्र का उपयोग करने से यह सार्वजनिक अनुबंध का हिस्सा बन जाता है, और कुछ ऐसा भी हो सकता है जिसे भविष्य के बदलावों या विरासत के बिना तोड़ा नहीं जा सकता है। यह कुछ ऐसा है जो एक संपत्ति की पेशकश नहीं कर सकता है।
तो readonly
कुछ मामलों में संपत्ति पर क्षेत्र चुनने के लिए अपरिवर्तनीय वैध कारण की गारंटी है ?
(स्पष्टीकरण के लिए, मैं निश्चित रूप से यह नहीं कह रहा हूं कि आपको हमेशा यह चुनाव करना चाहिए क्योंकि क्षेत्र फिलहाल अपरिवर्तनीय होता है, केवल तब जब यह वर्ग के डिजाइन के हिस्से के रूप में समझ में आता है और इसका अनुबंध में अपरिवर्तनीयता को शामिल करने का इरादा है। मुझे ज्यादातर इस बात पर दिलचस्पी है कि विशिष्ट मामलों के बजाय यह उचित हो सकता है या नहीं, जैसे कि जब आपको सदस्य की आवश्यकता हो interface
, या आलसी-लोडिंग करना चाहते हों।)