Thursday 15 July 2010

c# - How to keep field readonly? -


मान लीजिए कि हमारे पास निम्न श्रेणी है:

  class C {निजी रीडोनली डेटाटाइप जानकारी; निजी रीडोनली अतिरिक्त टाइप अतिरिक्त; सी (डेटाटाइप नयाडेटा) {डेटा = नयाडेटा; // लंबे कोड को अतिरिक्त मूल्यांकन करना) सी (अन्य टाइप नयाडेटा) {// नया डेटा से ईवाल्ड डेटा // अतिरिक्त मूल्यांकन करने वाला एक ही लंबा कोड}}   

दोनों डेटा और अतिरिक्त सी के पूरे जीवन के माध्यम से अपरिवर्तित रहे। हालांकि, एक कोड गंध है: कंस्ट्रक्टर्स दोनों में अतिरिक्त का मूल्यांकन अनुभाग दोगुना हो गया है। प्राकृतिक विकल्प तब इसे किसी अन्य विधि में निकालने के लिए है:

  class C {निजी रीडोनली डेटाटाइप डेटा; निजी रीडोनली अतिरिक्त टाइप अतिरिक्त; निजी शून्य EvalAdditional () {// लंबे कोड का मूल्यांकन अतिरिक्त} सी (DataType newData) {data = newData; EvalAdditional (); } सी (अन्य टाइप नयाडेटा) {// नए डेटा से Eval डेटा EvalAdditional (); }}   

लेकिन फिर अतिरिक्त अब केवल पढ़ने के लिए नहीं जा सकते हैं (संभव है कि इसे सीटीओआर में प्रारंभ नहीं किया गया है)।

इस समस्या को एक शानदार तरीके से कैसे हल किया जा सकता है?

बस विधि को EvalAdditional वापस अतिरिक्त वस्तु दें ( शून्य के बजाय)।

  केवल पढ़ने के लिए डेटाटाइप डेटा; केवल अतिरिक्त अतिरिक्त टाइप करें; अतिरिक्त प्रकार EvalAdditional () {// अतिरिक्त कोड अतिरिक्त अतिरिक्त मूल्यांकन का मूल्यांकन; } सी (डेटाटाइप नयाडेटा) {डेटा = नयाडेटा; अतिरिक्त = EvalAdditional (); } सी (अन्य टाइप नयाडेटा) {// नए डेटा से eval डेटा अतिरिक्त = EvalAdditional (); }    

No comments:

Post a Comment