हर बार जब मैं एक ऑब्जेक्ट बनाता हूं जिसमें संग्रह संपत्ति है तो मैं इसे करने के सर्वोत्तम तरीके पर आगे और आगे जाता हूं?संग्रह संपत्ति का खुलासा कैसे करें?
-
एक गेटर कि निजी चर के लिए एक संदर्भ रिटर्न
- स्पष्ट get_ObjList और set_ObjList तरीकों कि लौट सकते हैं और नए या क्लोन वस्तुओं हर बार बनाने के साथ
- सार्वजनिक संपत्ति
- स्पष्ट get_ObjList कि एक IEnumerator वापस आती है और एक set_ObjList कि IENumerator
संग्रह में कोई फर्क पड़ता है यदि संग्रह है एक सरणी (यानी, objList.Clone()) एक सूची बनाम?
यदि संदर्भ के रूप में वास्तविक संग्रह को वापस करना इतना बुरा है क्योंकि यह निर्भरता बनाता है, तो संदर्भ के रूप में किसी भी संपत्ति को वापस क्यों करें? जब भी आप किसी बच्चे के ऑब्जेक्ट को किसी संदर्भ के रूप में बेनकाब करते हैं तो उस बच्चे के आंतरिक भाग को माता-पिता के बिना "जानना" बदला जा सकता है जब तक कि बच्चे के पास संपत्ति बदल नहीं जाती है। क्या स्मृति रिसाव के लिए कोई खतरा है?
और, 2 और 3 ब्रेक धारावाहिक विकल्प नहीं हैं? क्या यह एक पकड़ 22 है या क्या आपको कस्टम सीरियलाइजेशन लागू करना होगा जब भी आपके पास संग्रह संपत्ति हो?
सामान्य रीडऑनली कोलेक्शन सामान्य उपयोग के लिए एक अच्छा समझौता जैसा प्रतीत होता है। यह एक IList लपेटता है और इसके उपयोग को प्रतिबंधित करता है। शायद यह स्मृति रिसाव और क्रमबद्धता में मदद करता है। हालांकि इसमें अभी भी enumeration concerns
शायद यह केवल निर्भर करता है। यदि आपको परवाह नहीं है कि संग्रह संशोधित है, तो बस इसे एक निजी चर के रूप में प्रति # 1 पर एक निजी चर के रूप में बेनकाब करें। यदि आप अन्य प्रोग्राम संग्रह को संशोधित नहीं करना चाहते हैं तो # 2 और/या # 3 बेहतर है।
प्रश्न में लागू यह है कि एक विधि को दूसरे तरीके से क्यों इस्तेमाल किया जाना चाहिए और सुरक्षा, स्मृति, क्रमबद्धता आदि पर क्या चलाना चाहिए?
कृपया ध्यान दें कि सरणी ऑब्जेक्ट्स के मुक्केबाजी और अनबॉक्सिंग का कारण बनती हैं जो बहुत संसाधन गहन – Brettski
है यदि सरणी दृढ़ता से टाइप की जाती है (यानी int [], long [], आदि), तत्वों तक पहुंच बॉक्सिंग का कारण नहीं बनती है। यह तभी होगा जब आप किसी ऑब्जेक्ट का उपयोग कर रहे थे [] मूल्य प्रकारों को स्टोर करने के लिए (यानी ऑब्जेक्ट [] a = new {1, 2, 3})। –
आह, उचित बिंदु, आपने मेरे सुझाव में सुधार किया है। अच्छा है! :) – Quibblesome