2010-09-28 18 views
5

कोई भी मुझे परिवर्तनीय और अपरिवर्तनीय के बीच बुनियादी अंतर खोजने में मदद कर सकता है?परिवर्तनीय और अपरिवर्तनीय के बीच क्या अंतर है?

+3

Errr, एक, बदल सकते हैं अन्य नहीं! आज की विशेष के सवालों ... अचल स्थिति की – leppie

+0

प्रकार के लिए दिन हो रहा है: http://blogs.msdn.com/b/ericlippert/archive/2007/11/13/immutability-in-c-part-one -kinds के- immutability.aspx – LukeH

+0

धन्यवाद एक और अल्ला –

उत्तर

12

Immutable का अर्थ है कि एक बार आरंभ होने पर, किसी ऑब्जेक्ट की स्थिति बदल नहीं सकती है।

उत्परिवर्ती का अर्थ यह हो सकता है।

उदाहरण के लिए - .NET में स्ट्रिंग अपरिवर्तनीय हैं। जब भी आप एक स्ट्रिंग (trims, ऊपरी आवरण, आदि ...) पर एक ऑपरेशन करते हैं तो एक नई स्ट्रिंग बन जाती है।

अभ्यास में, आप एक अपरिवर्तनीय प्रकार बनाना चाहते हैं, तो आप केवल उस पर ही टिककर खेल की अनुमति है और अनुमति नहीं देते किसी भी राज्य में परिवर्तन (ताकि किसी भी निजी क्षेत्र में एक बार निर्माता समाप्त चल नहीं बदल सकते हैं)।

+1

'DateTime' एक और एक है। – Andrey

+0

@Andrey: अगर एक ValueType परिवर्तनशील है यह एक प्रोग्रामर त्रुटि है :) – leppie

2

तत्काल एक अपरिवर्तनीय प्रकार को बदला नहीं जा सकता है। उदाहरण के लिए तार अपरिवर्तनीय हैं। हर बार जब आप स्ट्रिंग के मान को बदलना चाहते हैं तो एक नया उदाहरण बनाया जाता है।

4

एक very basic definition होगा:

परिवर्त्य वस्तुओं: जब: आप एक वस्तु का एक उदाहरण के लिए एक संदर्भ है, कि उदाहरण की सामग्री

अपरिवर्तनीय वस्तुओं बदला जा सकता है आप एक वस्तु का एक उदाहरण के लिए एक संदर्भ, कि उदाहरण की सामग्री को परिवर्तित नहीं किया जा सकता है

3

Immutable का अर्थ है "इसे बनाए जाने के बाद संशोधित नहीं किया जा सकता"।

  • एक अपरिवर्तनीय प्रकार में एक कन्स्ट्रक्टर और गेटर्स हैं लेकिन सेटर्स नहीं हैं।
  • एक परिवर्तनीय प्रकार में सेटर्स भी हो सकते हैं।

एक अपरिवर्तनीय प्रकार का एक उदाहरण डेटटाइम है। विधि AddMinutes ऑब्जेक्ट को संशोधित नहीं करता है - यह एक नया डेटटाइम बनाता है और देता है।

एक और उदाहरण स्ट्रिंग है। एक परिवर्तनीय वर्ग के लिए स्ट्रिंग के समान आप कक्षा StringBuilder का उपयोग कर सकते हैं।

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

1

कार्यात्मक भाषाओं में उपयोग करने योग्य अपरिवर्तनीय चर। एक शब्द परिवर्तनीय का उपयोग अनुचित और कार्यात्मक प्रोग्रामर शब्द मान पसंद करते हैं।

1

अचल स्थिति के लाभ:

1 थ्रेड सुरक्षा
3 त्रुटियों की संभावना कम

साझा करना तो अचल स्थिति को पसंद करते हैं, यदि आप विकल्प नहीं है।:)

0

उपयोग संदर्भ
imaginationhunt.blogspot

IS STRING MUTABLE OR IMMUTABLE IN .NET?

परिवर्त्य: परिवर्त्य साधन जिसका राज्य के बाद यह बनाई गई है बदला जा सकता है।
अपरिवर्तनीय: अपरिवर्तनीय साधन जिसका राज्य एक बार यह बनाई गई है बदला नहीं जा सकता।

स्ट्रिंग वस्तुओं 'अडिग' इसका मतलब है कि हम भी स्ट्रिंग पर आपरेशन स्ट्रिंग के पात्रों को संशोधित करने के बजाय एक संशोधित संस्करण का उत्पादन स्ट्रिंग में निहित पात्रों संशोधित नहीं कर सकते हैं।

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