2009-07-06 10 views
47

सी # में, गुमनाम प्रकार के गुण केवल-पढ़ने के:सी # केवल पढ़ने में गुमनाम प्रकारों के गुण क्यों हैं?

var person = new { Surname = "Smith", OtherNames = "John" }; 
person.Surname = "Johnson"; // ERROR: .Surname is read-only 

बेशक मैं एक असली वर्ग घोषणा कर सकते हैं अगर मैं लिखने योग्य क्षेत्रों या गुण चाहते हैं, लेकिन परवाह किए बिना, इस डिजाइन करने के निर्णय के पीछे तर्क क्या है गुणों को केवल पढ़ने के लिए?

+0

सुरक्षा, शायद? यदि आपने यह निर्दिष्ट नहीं किया है कि वे लिखने योग्य थे, तो उन्हें लिखे जाने की अनुमति न दें? इसके अलावा, वे गुण हैं, फ़ील्ड नहीं। –

+0

अच्छा बिंदु, मैं पाठ बदल दूंगा। मैंने यह भी सोचा कि क्यों उन्हें "पठनीय" के साथ घोषित फ़ील्ड नहीं दिए जा सकते ... –

+1

http://stackoverflow.com/questions/622664/what-is-immutability-and-why-should-i-worry-about- यह –

उत्तर

50

उस here पर दिलचस्प लेख। वहां से ...

को

... [बी] y सुनिश्चित सदस्यों करते परिवर्तन नहीं, हम यह सुनिश्चित करता है कि हैश object.This के जीवन भर के लिए स्थिर है की अनुमति देता है गुमनाम प्रकार होना सदस्यों को संशोधित होने पर खोने के बिना, हैशटेबल्स जैसे संग्रहों के साथ उपयोग किया जाता है। कि में immutabilty के लाभ का एक बहुत कुछ कर रहे हैं, यह काफी कोड के बाद से वे केवल मूल्यों जब बनाया सौंपा जा सकता है और फिर बस का इस्तेमाल किया वस्तु का उपयोग करता है सरल (सूत्रण लगता है)

+0

यह एक अच्छा लिंक है, धन्यवाद! –

+10

हां अपरिवर्तनीयता के लिए बहुत सारे फायदे हैं, लेकिन उत्परिवर्तन के लिए भी बहुत सारे फायदे हैं - आप उपर्युक्त तर्क का उपयोग यह तर्क देने के लिए कर सकते हैं कि सूची भी अपरिवर्तनीय होनी चाहिए। यह निर्णय बिल्कुल कोई समझ नहीं आता है। –

+0

मैं डैनी से सहमत हूं। यह निर्णय बिल्कुल कोई समझ नहीं आता है। – tomexou

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