यहां दिलचस्प सवाल टिप्पणियों से अपने सवाल यह है:
वस्तु किस तरह आपको लगता है कि आप कुछ बिंदु पर मूल्यों को संशोधित करने की जरूरत नहीं है के लिए होता है? मैं मॉडल मॉडल नहीं अनुमान लगा रहा हूं, सही? मुझे अपने डेटाबेस में किसी व्यक्ति का नाम बदलना पड़ा - यह इस विचार से फिट नहीं होगा।
ठीक है, उन चीजों पर विचार करें जो पहले से ही अपरिवर्तनीय हैं। संख्या अपरिवर्तनीय हैं। एक बार आपके पास संख्या 12 हो जाने के बाद, यह 12 है। आप इसे बदल नहीं सकते हैं। यदि आपके पास एक चर है जिसमें 12 है, तो आप चर के गुणों को 13 में बदल सकते हैं, लेकिन आप परिवर्तनीय बदल रहे हैं, संख्या 12 पर नहीं।
तारों के साथ ही। "एबीसी" "एबीसी" है, और यह कभी नहीं बदलता है। यदि आपके पास एक चर है जिसमें "एबीसी" है, तो आप इसे "abcd" में बदल सकते हैं, लेकिन यह "abc" नहीं बदलता है, जो चर बदलता है।
एक सूची के बारे में क्या? {12, "abc"} वह सूची है जो 12 है "इसके बाद" एबीसी ", और वह सूची कभी भी नहीं बदली जाती है। सूची {12, "abcd"} एक अलग-अलग सूची है।
और यही वह जगह है जहां चीजें रेल से निकलती हैं। क्योंकि सी # में आप इसे किसी भी तरह से कर सकते हैं। आप कह सकते हैं कि रेफरेंसियल पहचान उन दो सूचियों के बीच है यदि सूचियों को उनकी पहचान को बदले बिना अपनी सामग्री को म्यूट करने की अनुमति है।
जब आप "मॉडल" के बारे में बात करते हैं तो आप सिर पर नाखून दाहिनी ओर हिट करते हैं। क्या आप कुछ बदल रहे हैं जो बदलता है? यदि ऐसा है, तो संभवतः इसे एक प्रकार के साथ मॉडल करना संभव है जो बदलता है। इसका लाभ यह है कि मॉडल की विशेषताओं को मॉडल के मॉडल से मेल खाते हैं। नीचे की ओर यह है कि "रोलबैक" कार्यक्षमता जैसी कुछ करना बहुत मुश्किल हो जाता है, जहां आप एक बदलाव को पूर्ववत करते हैं।
यदि आप {12, "abc"} को {12, "abcd"} में बदलते हैं और फिर उत्परिवर्तन वापस रोल करना चाहते हैं, तो आप इसे कैसे करते हैं? यदि सूची अपरिवर्तनीय है तो आप केवल दोनों मानों को रखें और चुनें कि आप कौन सा "वर्तमान" मान बनना चाहते हैं। यदि सूची उत्परिवर्तनीय है तो आपको पूर्ववत तर्क को "पूर्ववत कार्य" के आसपास रखना होगा जो कि उत्परिवर्तन को पूर्ववत करने के बारे में जानता है।
आपके विशिष्ट उदाहरण के लिए, आप निश्चित रूप से एक अपरिवर्तनीय डेटाबेस बना सकते हैं। आप अपने अपरिवर्तनीय डेटाबेस में किसी के नाम को कैसे बदलते हैं? आप नहीं करते आप नया डेटाबेस बनाते हैं जिसमें आपके पास इच्छित डेटा है। अपरिवर्तनीय प्रकारों वाली चाल अरबों बाइटों की प्रतिलिपि के बिना, कुशलता से ऐसा करना है। अपरिवर्तनीय डेटा संरचना डिज़ाइन को दो लगभग समान संरचनाओं के बीच राज्य साझा करने के चालाक तरीकों की आवश्यकता होती है।
संभावित डुप्लिकेट [मैं एक अपरिवर्तनीय कक्षा कैसे बना सकता हूं?] (Http://stackoverflow.com/questions/352471/how-do-i-create-an-immutable-class) –
डुप्लिकेट नहीं: क्योंकि यह प्रश्न सत्यापन के बारे में है, सृजन नहीं। – ChrisW
मैं सत्यापन के बारे में पूछ रहा हूं, सृजन नहीं। –