http://msdn.microsoft.com/en-US/library/0fss9skc(v=vs.120).aspx के अनुसार, गुणों को सरणी वापस नहीं करनी चाहिए। यह जेनेरिक के साथ कैसे बातचीत करता है? यदि कोई सरणी जेनेरिक के लिए स्वीकार्य प्रकार है, तो क्या मुझे T GetValue()
और SetValue(T value)
जैसे T Value { get; set; }
के बजाय फ़ंक्शन बनाना चाहिए?सामान्य गुण हैं जो सरणी को स्वीकार्य कर सकते हैं?
6
A
उत्तर
10
यह नियम पूर्ण नहीं है। समझें कि यह कहां से आता है: एक सरणी लौटने वाली संपत्ति को वास्तविक रूप से इसकी प्रतिलिपि बनाने की आवश्यकता होती है ताकि कॉलर अपनी प्रतिलिपि को बदल सके और ऑब्जेक्ट आंतरिक स्थिति में न पहुंच सके।
यदि आप जेनेरिक कोड से निपट रहे हैं कि जेनेरिक कोड कंक्रीट T
के बारे में कुछ भी नहीं जानता है। यह इसकी आंतरिक संरचना पर निर्भर नहीं है। इसलिए, इस नियम का पालन करने में मदद नहीं मिलती है। जेनेरिक कोड में और बाहर पासिंग सरणी पूरी तरह से स्वीकार्य है।
व्यावहारिक उदाहरण: List<int[]>
।
इसके अलावा, सर्वी सही ढंग से नोट करती है कि मूल्य प्राप्त करने/सेट करने के तरीकों को बनाने के लिए वास्तव में नियम के तर्क में वर्णित प्रभावों को कम करने के लिए कुछ भी नहीं कर रहा है।
संबंधित मुद्दे
- 1. क्या मॉड्यूल में वही गुण हो सकते हैं जो ऑब्जेक्ट्स कर सकते हैं?
- 2. क्या चींटी गुण अन्य गुणों को हल कर सकते हैं?
- 3. यह स्वीकार्य एक वर्ग है जो आप संशोधित कर सकते हैं
- 4. std कर सकते हैं :: वेक्टर एक सरणी
- 5. वसंत पार्स और इंजेक्शन गुण फ़ाइलें कर सकते हैं?
- 6. क्या मॉड्यूल में गुण हो सकते हैं?
- 7. क्या जावा में "गुण" हैं जो वही काम करते हैं जो गुण C# में काम करते हैं?
- 8. WebInvoke सकते हैं गुण बाइंडिंग विन्यास
- 9. रूट तत्व के गुण कैसे प्राप्त कर सकते हैं?
- 10. क्या कर सकते हैं कि sed क्या कर सकते हैं?
- 11. Activeadmin कर सकते हैं कर सकते हैं प्रमाणीकरण त्रुटि
- 12. क्या आप जावा में एक सामान्य विधि के लिए एक int सरणी पास कर सकते हैं?
- 13. वीआईएम ऑटोइंडेंट एसक्यूएल कर सकते हैं?
- 14. कैसे कर सकते हैं मैं MVC3
- 15. क्या कोई प्रोग्राम हैं जो अस्थिर नेटवर्क कनेक्शन को अनुकरण कर सकते हैं?
- 16. मैं कैसे नियंत्रित कर सकते हैं जो YAML
- 17. पूछताछ जो एसक्यूएल शामिल है क्वेरी नहीं कर सकते हैं?
- 18. लपेटें एक async एक जो कर सकते हैं
- 19. रूबी को प्रतिस्थापित कर सकते हैं node.js?
- 20. पुनर्विक्रेता टॉस्ट्रिंग उत्पन्न कर सकते हैं जिसमें सभी वर्ग गुण शामिल हैं?
- 21. क्या आप वीबीस्क्रिप्ट में निरंतर सरणी घोषित कर सकते हैं?
- 22. मैं कैसे निर्धारित कर सकते हैं एक गतिशील सरणी VBScript
- 23. क्या आप इसे समझने में मेरी मदद कर सकते हैं? "सामान्य आरईएसटी गलतियों: सत्र अप्रासंगिक हैं"
- 24. घोंसला वाले ट्रंक/शाखाएं/टैग स्वीकार्य हैं?
- 25. कर सकते हैं .cvsignore रिकर्सिव उपनिर्देशिका में पाए गए पैटर्न को बाहर कर सकते हैं?
- 26. जावास्क्रिप्ट सरणी के अंदर सरणी - मैं कैसे कॉल कर सकते हैं बच्चे सरणी नाम
- 27. MySQL में क्वेरी कैसे लिख सकते हैं जो JSON डेटा को कॉलम में पार्स कर सकते हैं?
- 28. मैं {} से एक नियमित सरणी को प्रारंभ कर सकते हैं क्यों नहीं, बल्कि एक std :: सरणी
- 29. आप डॉल्विक वीएम (एंड्रॉइड के वीएम) पर क्या कर सकते हैं जो आप सन वीएम में कर सकते हैं?
- 30. क्या हम फ़ायरबेस विश्लेषण से उपयोगकर्ता गुण हटा सकते हैं?
मूल्य प्राप्त करने/सेट करने के तरीकों का निर्माण करना वास्तव में नियम के तर्क में वर्णित प्रभावों को कम करने के लिए कुछ भी नहीं कर रहा है। – Servy
इस बारे में वास्तव में कभी नहीं सोचा। जब मैं नहीं चाहता था कि मेरा आंतरिक संग्रह जोड़ा जाए या हटा दिया जाए तो मैंने हमेशा एक सरणी वापस कर दी है। शायद, मुझे ReadOnlyCollection का उपयोग शुरू करना चाहिए। – TyCobb
@ सर्वी: हालांकि पर्याप्त सत्य है, अधिकांश प्रोग्रामर एक लूप में GetValueT() [x] जैसे निर्माण का उपयोग करने से पहले थोड़ा सोचते हैं। – RobinHood70