यदि मैं कक्षा का सदस्य निजी बनाता हूं, और फिर मैं उस सदस्य को स्वीकार करना चाहता हूं, तो हमें उस सदस्य के लिए सार्वजनिक संपत्ति को परिभाषित करना होगा। लेकिन फिर मुझे आश्चर्य है: यदि हम इसके लिए सार्वजनिक संपत्ति घोषित करके कक्षा के सदस्य का सार्वजनिक रूप से उपयोग कर सकते हैं, तो हम कक्षा के सदस्य को सार्वजनिक रूप से क्यों परिभाषित नहीं करते हैं?सी # में निजी क्षेत्रों के लिए सार्वजनिक संपत्तियों का उपयोग क्यों करें?
उत्तर
क्योंकि आप किसी संपत्ति में निर्दिष्ट मान को सत्यापित कर सकते हैं।
यह वास्तव में एक तर्क नहीं है क्योंकि यदि आपको बाद में ऐसा करने की आवश्यकता मिलती है, तो आप फिर भी संपत्ति को पेश कर सकते हैं। – Timwi
@ तिमवी, मुझे लगता है कि एक संपत्ति में एक सदस्य को बदलने से कोड को मजबूर किया जाएगा जो कि .dll के भीतर प्रकार का पुन: उपयोग करने के लिए उपयोग करता है। हालांकि अधिकांश लोगों के लिए यह कोई समस्या नहीं है, अगर आप तीसरे पक्ष की खपत के लिए डीडीएस वितरित कर रहे हैं, तो इससे बचा जाना चाहिए। – tster
हां, लेकिन जैसा कि आपने स्वयं बताया है, यह केवल पुस्तकालयों पर लागू होता है। आपका जवाब यह नहीं बताता है। – Timwi
संपत्ति एक्सेसर्स (प्राप्त करें, सेट विधियां) आपको अपना कार्यान्वयन बदलने की अनुमति दें भविष्य है। उदाहरण के लिए, आप बैकिंग फ़ील्ड (निजी श्रेणी के सदस्य) से शुरू कर सकते हैं लेकिन बाद में संपत्ति कुछ गणना का परिणाम बन सकती है। इसके अलावा, संपत्ति वाक्यविन्यास आपको केवल-पढ़ने वाले सदस्यों को रखने की अनुमति देता है - ताकि आप केवल अपनी कक्षा के भीतर मूल्य बदल सकें, दुनिया के बाहर ही इसे पढ़ सकते हैं।
यह तर्क केवल पढ़ने योग्य गुणों के लिए मामला बनाता है - लेकिन पढ़ने/लिखने वाले नहीं। यदि आपको बाद में किसी संपत्ति की आवश्यकता मिलती है क्योंकि यह गणना मूल्य में बदल जाती है, तो भी आप संपत्ति को तब भी पेश कर सकते हैं। – Timwi
माइक्रोसॉफ्ट दोहरी संगतता के कारणों के लिए सार्वजनिक क्षेत्रों के स्थान पर सामाजिक गुण के उपयोग की सिफारिश। यह केवल एक मुद्दा है यदि आप एक पुस्तकालय लिख रहे हैं (जो अन्य कार्यक्रमों तक पहुंच जाएगा)।
- आप
- किसी और ने एक कार्यक्रम अपने पुस्तकालय का उपयोग करता है और पहुँचता है कि सार्वजनिक क्षेत्र
- अब आप करना चाहते हैं कि लिखते हैं एक सार्वजनिक क्षेत्र के साथ एक पुस्तकालय बनाने के लिए:
असल में, इस परिदृश्य की कल्पना अपने क्षेत्र को सार्वजनिक संपत्ति पर बदलें क्योंकि आपको इनपुट मान को सत्यापित करने की आवश्यकता है, या संपत्ति गणना का परिणाम बन गई है, या आप इसे अपवाद फेंकना चाहते हैं क्योंकि यह अप्रचलित है, या जो भी हो।
- उपयोगकर्ता आपकी लाइब्रेरी को अपग्रेड करने का प्रयास करता है, लेकिन लाइब्रेरी का उपयोग करने वाले प्रोग्राम नहीं।
यह पूरी तरह से कार्यक्रम को तोड़ देगा - यह काम करना बंद कर देगा और केवल क्रैश होगा। हालांकि, अगर क्षेत्र के बजाय आपके पास शुरुआत से ही सार्वजनिक संपत्ति थी, तो आप लाइब्रेरी को स्वैप कर सकते थे।
यह निश्चित रूप से पुस्तकालयों के लिए प्रासंगिक है। अन्य सभी मामलों में, सलाह वास्तव में प्रासंगिक नहीं है और यदि आप चाहें तो फ़ील्ड का उपयोग कर सकते हैं। यदि आपको बाद में पता चलता है कि आपको एक संपत्ति की आवश्यकता है, तो भी आप इसे किसी संपत्ति में बदल सकते हैं और आपका प्रोग्राम अभी भी ठीक संकलित होगा।
बहुत अच्छी व्याख्या। – Hari
यहां कुछ कारण हैं कि हम सार्वजनिक क्षेत्रों के बजाय सार्वजनिक गुणों का उपयोग क्यों करते हैं।
- आप प्राप्त/सेट तरीकों में और अधिक जटिल कोड लिख सकते हैं, जबकि केवल क्षेत्रों में एक भी मूल्य है।
- गुण आपके कोड को "ओओ" बनाता है। व्यक्ति नामक एक वर्ग कहें, हम आसानी से अनुमान लगा सकते हैं कि इसमें संपत्ति है जिसे "नाम" कहा जाता है। लेकिन "नाम" नामक सार्वजनिक क्षेत्र वास्तव में अजीब है।
- कुछ विशेषताएँ गुणों के लिए केवल (विशेषता Targets.Property) के लिए काम करती हैं।
गुणों का उपयोग करने का कारण बहुत आसान है। आप अपने काम के आधार पर किसी भी बाहरी कार्यक्रम को तोड़ने के बिना कोड के हैंडलिंग को अपने मूल्य को प्राप्त/सेट कर सकते हैं - यह फ़ील्ड के साथ संभव नहीं है।इसके अलावा, गुणों को आभासी के रूप में चिह्नित किया जा सकता है, और इस प्रकार, बच्चों की कक्षाओं द्वारा फिर से परिभाषित किया जा सकता है - फिर भी किसी भी संगतता को तोड़ने के बिना।
- 1. ऑब्जेक्टिव-सी में निजी संपत्तियों का निर्माण
- 2. निजी सदस्य चर के लिए उपयोग अवरुद्ध? सार्वजनिक संपत्तियों का उपयोग बल?
- 3. ओओ डिजाइन - क्या आप आंतरिक संपत्तियों या निजी क्षेत्रों का आंतरिक रूप से उपयोग करते हैं?
- 4. उद्देश्य-सी: विरासत वर्ग में निजी संपत्तियों का उपयोग
- 5. निजी संपत्तियों के लिए निजी चर के उपयोग को प्राप्त/सेट करें
- 6. क्या सी # में निजी संपत्तियों का उपयोग करने के कोई कारण हैं?
- 7. वीबीएनईटी निजी क्षेत्रों के लिए नामकरण सम्मेलन
- 8. निजी क्षेत्रों तक पहुंच
- 9. संपत्तियों को निजी बनाने के लिए कैसे?
- 10. संपत्तियों की तुलना में सार्वजनिक क्षेत्र तेजी से क्यों हैं?
- 11. निजी टाइपपीफ पोर्टेबल का सार्वजनिक उपयोग है?
- 12. निजी क्षेत्रों का कचरा संग्रह
- 13. सी ++ में सार्वजनिक सदस्यों के नीचे निजी सदस्यों को परिभाषित क्यों करें?
- 14. PHP | सार्वजनिक/निजी फ़ंक्शन के बजाय मुझे सार्वजनिक स्थिर/निजी स्थैतिक फ़ंक्शन का उपयोग क्यों करना चाहिए?
- 15. सार्वजनिक निजी इतनी महत्वपूर्ण क्यों सुरक्षित है?
- 16. निजी सदस्यों या सार्वजनिक एक्सेसर्स का उपयोग करने के तरीके
- 17. सार्वजनिक तरीकों से निजी तरीके
- 18. क्यों सी # में केवल पढ़ने के लिए उपयोग करें
- 19. निजी और सार्वजनिक कॉन्स गुणों के साथ XmlSerializer का उपयोग
- 20. निजी/सार्वजनिक हेडर उदाहरण?
- 21. निजी या सार्वजनिक एमएसएमक्यू
- 22. मुझे सार्वजनिक/निजी/स्थिर तरीकों का उपयोग कब करना चाहिए?
- 23. निजी और सार्वजनिक वर्गों में विभाजन संरचना?
- 24. PHP में 'संरक्षित' या 'निजी' का उपयोग क्यों न करें?
- 25. निजी संपत्तियों के साथ क्लास बनाने
- 26. सी ++ कक्षाएं (सार्वजनिक, निजी, और संरक्षित)
- 27. कन्स्ट्रक्टर को निजी या सार्वजनिक
- 28. एसएसएल सार्वजनिक/निजी कुंजी का उपयोग कर वेब आधारित लॉगिन?
- 29. सी # सार्वजनिक सदस्य को ओवरराइड करें और इसे निजी बनाएं
- 30. सी # सार्वजनिक संरचना के स्थिर क्षेत्र का उपयोग कैसे करें
आप क्या पूछ रहे हैं? वह (एकल वाक्य) अचूक है। – tster
मैंने इसे संपादित किया है। मुझे लगता है कि यही वह मतलब था। – Timwi
मुझे लगता है कि आखिरी वाक्य "... पहले स्थान पर निजी" को "... पहले सार्वजनिक रूप में" बदला जाना चाहिए। –