2008-11-20 13 views

उत्तर

4

क्या कोड अन्य भाषाओं द्वारा उपयोग किया जा रहा है? यदि ऐसा है, तो वह हमीश के जवाब को ध्यान में रखते हुए संतुलन को ओवरलोड की ओर स्विंग करता है। विशेष रूप से, सी # वैकल्पिक पैरामीटर का समर्थन नहीं करता है - अभी तक ...

मान्य रूप से यह वास्तव में आपके कोड का उपयोग करके किसी को रोक नहीं सकता है, यह सिर्फ उनके लिए दर्द हो सकता है।

अगर वहाँ मानकों का एक बहुत हैं और वे तार्किक कुछ का प्रतिनिधित्व करते हैं, आप उन्हें एक साथ encapsulating विचार करने के लिए, एक ही तरह से चाहते हो सकता है कि ProcessStartInfo साथ Process काम करता है। ऑब्जेक्ट प्रारंभकर्ताओं के कारण यह सी # से विशेष रूप से अच्छा है।

यदि यह निर्माण के लिए है, तो आप बिल्डर पैटर्न को इसके रूप में भी मान सकते हैं। उदाहरण के लिए, प्रोटोकॉल बफ़र में मैं की तरह कुछ कर सकते हैं:

Person jon = new Person.Builder { Name="Jon", Age=32, 
            Spouse="Holly", Kids=3 }.Build(); 

जो बहुत पठनीय होने जबकि अभी भी (एक ही बार में एक व्यक्ति को बनाने एक अभिव्यक्ति में समाप्त होता है, और व्यक्ति खुद उत्परिवर्तित बिना - वास्तव में संदेश प्रकार अपरिवर्तनीय है; यह केवल निर्माता है जो नहीं है)।

+0

ओवरलोड का एक और "प्रो" यह है कि आप देख सकते हैं कि प्रत्येक ओवरलोड में कितने संदर्भ हैं। आप वैकल्पिक पैरामीटर के साथ नहीं कर सकते हैं। – Burnsys

8

यदि पैरामीटर वैकल्पिक हैं (यानी ओवरलोड्स पैरामीटर का एक सबसेट है जो पूर्ण प्रक्रिया हस्ताक्षर स्वीकार करता है) तो डिफ़ॉल्ट या वैकल्पिक पैरामीटर अधिक समझदार होंगे।

यदि अधिभार पैरामीटर के लिए एक अलग प्रकार की अनुमति दे रहा है या एक अर्थात् अलग पैरामीटर है जिसे नियमित रूप से अलग-अलग व्याख्या किया जाएगा तो अधिभार अधिक समझदार होगा।

+0

उत्कृष्ट उत्तर – baash05

0

FYI करें

आप एक समारोह या विधि है कि अन्य विधानसभाओं से कहा जाता है, तो एक पैरामीटर जोड़ना चाहते हैं:

आप अतिरिक्त पैरामीटर के साथ एक अतिरिक्त समारोह बनाकर ओवरलोड कर सकते हैं।

या आप एक वैकल्पिक पैरामीटर जोड़ सकते हैं, लेकिन: आपको इस समारोह को कॉल करने वाली सभी असेंबली को दोबारा जोड़ना होगा, भले ही उन्हें नए वैकल्पिक पैरामीटर का उपयोग करने की आवश्यकता न हो! यह आम तौर पर लोगों की अपेक्षा नहीं करता है (विशेष रूप से वे वीबी 6 कैसे काम करते हैं)। असल में, आप किसी फ़ंक्शन में नए वैकल्पिक पैरामीटर में पर्ची नहीं कर सकते हैं और उम्मीद करते हैं कि यह पूरी तरह से पीछे की ओर संगत हो। साथ ही, जैसा कि मैं इसे समझता हूं, यदि आप डिफ़ॉल्ट मान को बदलते हैं, तो आपको काम में बदलाव के लिए सभी कॉलिंग असेंबली का पुनर्निर्माण करने की आवश्यकता है।

संबंधित मुद्दे