2012-10-24 11 views
6

मार्शल। डेस्ट्रायस्ट्रक्चर को .NET Framework में शुद्ध विशेषता के साथ चिह्नित किया गया है, लेकिन मुझे इस बात के बारे में अनिश्चितता है कि जब इसे स्पष्ट रूप से संदर्भित करने पर इसका प्रभाव क्यों होता है।मार्शल क्यों है। डेस्ट्रायस्ट्रक्चर शुद्ध माना जाता है?

राज्य संशोधित किया गया है (सूचक मुक्त हो जाता है) भले ही वह सीधा सूचक उदाहरण ही संशोधित नहीं करता है।

प्रश्न में निहित है: एक डेवलपर, अच्छा विश्वास में, के रूप में शुद्ध भले ही वह जानता है कि यह परोक्ष रूप से संदर्भ के राज्य को संशोधित करता है कुछ निशान कर सकते हैं?

+0

आप इस 'शुद्ध' विशेषता कहां देख रहे हैं? इस तरह से दस्तावेज नहीं किया गया है और प्रतिबिंब उपकरण का उपयोग विधि –

+1

@ पीटर पर 'शुद्ध एट्रिब्यूट' नहीं दिखाता है, अनुबंध एनोटेशन सीधे बीसीएल असेंबली का हिस्सा नहीं हैं; वे बाहरी अनुबंध असेंबली के माध्यम से तथ्य के बाद लागू होते हैं। –

+1

@DanBryant फिर कोड अनुबंध शुद्धता के बारे में एक धारणा बना रहा है। –

उत्तर

2

यह भावना यह दिखाई प्रबंधित स्थिति, जिसका मतलब है कोड ठेके के प्रयोजन के लिए, विधि वर्ग अपरिवर्तनशीलताओं का उल्लंघन नहीं कर सकता बुला पर कोई प्रभाव नहीं है कि में शुद्ध है।

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

+1

_observable_ दुष्प्रभावों से बचने के लिए शुद्ध _explicitly_ है, इसलिए यहां निहितार्थ यह है कि वे केवल अपने नियमों को तोड़ देते हैं। मैं वास्तव में जानना चाहूंगा कि वे ऐसा क्यों करेंगे। यह देखते हुए कि 'सुविधा' के बारे में अनुबंध क्या हैं, मुझे जवाब के रूप में नहीं मारा जाता है। – Rushyo

+0

@ रुशियो, मैं मानता हूं कि यह विशेष रूप से संतोषजनक तर्क नहीं है, लेकिन एकमात्र अन्य कारण यह है कि मैं सोच सकता हूं कि यह एक गलती थी। मुझे लगता है कि स्पष्ट रूप से दृश्यमान अप्रत्यक्ष रूप से देखने योग्य साइड इफेक्ट्स के बीच एक अंतर है, जो समझा सकता है कि इसे शुद्ध क्यों चिह्नित किया गया था। –

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