वीबी.नेट में, जो उपयोग करने के लिए बेहतर है: फ़ंक्शन ओवरलोडिंग या डिफ़ॉल्ट पैरामीटर?फंक्शन ओवरलोडिंग बनाम डिफ़ॉल्ट पैरामीटर?
उत्तर
क्या कोड अन्य भाषाओं द्वारा उपयोग किया जा रहा है? यदि ऐसा है, तो वह हमीश के जवाब को ध्यान में रखते हुए संतुलन को ओवरलोड की ओर स्विंग करता है। विशेष रूप से, सी # वैकल्पिक पैरामीटर का समर्थन नहीं करता है - अभी तक ...
मान्य रूप से यह वास्तव में आपके कोड का उपयोग करके किसी को रोक नहीं सकता है, यह सिर्फ उनके लिए दर्द हो सकता है।
अगर वहाँ मानकों का एक बहुत हैं और वे तार्किक कुछ का प्रतिनिधित्व करते हैं, आप उन्हें एक साथ encapsulating विचार करने के लिए, एक ही तरह से चाहते हो सकता है कि ProcessStartInfo
साथ Process
काम करता है। ऑब्जेक्ट प्रारंभकर्ताओं के कारण यह सी # से विशेष रूप से अच्छा है।
यदि यह निर्माण के लिए है, तो आप बिल्डर पैटर्न को इसके रूप में भी मान सकते हैं। उदाहरण के लिए, प्रोटोकॉल बफ़र में मैं की तरह कुछ कर सकते हैं:
Person jon = new Person.Builder { Name="Jon", Age=32,
Spouse="Holly", Kids=3 }.Build();
जो बहुत पठनीय होने जबकि अभी भी (एक ही बार में एक व्यक्ति को बनाने एक अभिव्यक्ति में समाप्त होता है, और व्यक्ति खुद उत्परिवर्तित बिना - वास्तव में संदेश प्रकार अपरिवर्तनीय है; यह केवल निर्माता है जो नहीं है)।
यदि पैरामीटर वैकल्पिक हैं (यानी ओवरलोड्स पैरामीटर का एक सबसेट है जो पूर्ण प्रक्रिया हस्ताक्षर स्वीकार करता है) तो डिफ़ॉल्ट या वैकल्पिक पैरामीटर अधिक समझदार होंगे।
यदि अधिभार पैरामीटर के लिए एक अलग प्रकार की अनुमति दे रहा है या एक अर्थात् अलग पैरामीटर है जिसे नियमित रूप से अलग-अलग व्याख्या किया जाएगा तो अधिभार अधिक समझदार होगा।
उत्कृष्ट उत्तर – baash05
FYI करें
आप एक समारोह या विधि है कि अन्य विधानसभाओं से कहा जाता है, तो एक पैरामीटर जोड़ना चाहते हैं:
आप अतिरिक्त पैरामीटर के साथ एक अतिरिक्त समारोह बनाकर ओवरलोड कर सकते हैं।
या आप एक वैकल्पिक पैरामीटर जोड़ सकते हैं, लेकिन: आपको इस समारोह को कॉल करने वाली सभी असेंबली को दोबारा जोड़ना होगा, भले ही उन्हें नए वैकल्पिक पैरामीटर का उपयोग करने की आवश्यकता न हो! यह आम तौर पर लोगों की अपेक्षा नहीं करता है (विशेष रूप से वे वीबी 6 कैसे काम करते हैं)। असल में, आप किसी फ़ंक्शन में नए वैकल्पिक पैरामीटर में पर्ची नहीं कर सकते हैं और उम्मीद करते हैं कि यह पूरी तरह से पीछे की ओर संगत हो। साथ ही, जैसा कि मैं इसे समझता हूं, यदि आप डिफ़ॉल्ट मान को बदलते हैं, तो आपको काम में बदलाव के लिए सभी कॉलिंग असेंबली का पुनर्निर्माण करने की आवश्यकता है।
- 1. फंक्शन ओवरलोडिंग जहां पैरामीटर केवल इलिप्स
- 2. फंक्शन डिफ़ॉल्ट तर्क और शीर्षलेख
- 3. फनक प्रतिनिधि बनाम फंक्शन
- 4. विधि बनाम फंक्शन बनाम प्रक्रिया बनाम कक्षा?
- 5. सामान्य प्रकार पैरामीटर ओवरलोडिंग अस्वीकृत?
- 6. संपत्ति बनाम फंक्शन (विशेष रूप से .NET)
- 7. गो में फ़ंक्शन ओवरलोडिंग के लिए वैकल्पिक?
- 8. फंक्शन "सामान्य"
- 9. C# डिफ़ॉल्ट पैरामीटर
- 10. त्रुटि: डिफ़ॉल्ट पैरामीटर 1
- 11. उद्देश्य सी डिफ़ॉल्ट पैरामीटर?
- 12. डिफ़ॉल्ट पैरामीटर मान
- 13. विधि पैरामीटर बनाम पैरामीटर ऑब्जेक्ट
- 14. ऑपरेटर ओवरलोडिंग: सदस्य फ़ंक्शन बनाम गैर-सदस्य फ़ंक्शन?
- 15. डिफ़ॉल्ट पैरामीटर टेम्पलेट बनाम विविध टेम्पलेट: अंतिम टेम्पलेट पैरामीटर क्या है?
- 16. पायथन ऑप्टपरसे डिफ़ॉल्ट बनाम फ़ंक्शन डिफ़ॉल्ट
- 17. SSRS तारीख डिफ़ॉल्ट जैसे पैरामीटर
- 18. विधि पैरामीटर सरणी डिफ़ॉल्ट मान
- 19. पीएचपी समारोह - कुछ डिफ़ॉल्ट पैरामीटर
- 20. बनाम निर्माता-पैरामीटर चर
- 21. स्थानीय चर बनाम पैरामीटर
- 22. सी # आउट पैरामीटर बनाम
- 23. सार प्रकार बनाम पैरामीटर
- 24. ढूँढना डीएल फंक्शन पैरामीटर्स
- 25. सी #: वैकल्पिक पैरामीटर और नामांकित तर्कों के साथ कन्स्ट्रक्टर ओवरलोडिंग?
- 26. रेल: क्वेरी पैरामीटर बनाम पोस्ट पैरामीटर
- 27. आर्किटेक्चर, कई पैरामीटर बनाम लंबे पैरामीटर सूचियां
- 28. जेनकिन्स 'स्ट्रिंग पैरामीटर बनाम टेक्स्ट पैरामीटर
- 29. AsyncTask doInBackground पैरामीटर बनाम कन्स्ट्रक्टर पैरामीटर
- 30. std :: enable_if: पैरामीटर बनाम टेम्पलेट पैरामीटर
ओवरलोड का एक और "प्रो" यह है कि आप देख सकते हैं कि प्रत्येक ओवरलोड में कितने संदर्भ हैं। आप वैकल्पिक पैरामीटर के साथ नहीं कर सकते हैं। – Burnsys