परीक्षण करना आसान है - दूसरी विधि कहलाती है।
क्यों - सी # भाषा विनिर्देश के बारे में कुछ सुंदर विस्तृत नियम हैं कि कैसे अस्पष्ट कार्य घोषणाएं हल हो जाती हैं। वहाँ और क्यों अलग भार के बुलाया मिल के कुछ विशिष्ट उदाहरण के साथ भार के एसओ आसपास के इंटरफेस, विरासत पर सवाल के बहुत सारे हैं, लेकिन विशेष रूप से जवाब देने के लिए:
C# Specification - Overload Resolution
7.5.3.2 बेहतर समारोह सदस्य
बेहतर कार्य सदस्य का निर्धारण करने के प्रयोजनों के लिए, एक छीन नीचे तर्क सूची एक ओ में सिर्फ तर्क भाव खुद को युक्त निर्माण किया है rder वे मूल तर्क सूची में दिखाई देते हैं। उम्मीदवार समारोह सदस्यों में से प्रत्येक के लिए
पैरामीटर सूचियों निम्नलिखित तरीके से निर्माण कर रहे हैं:
विस्तृत रूप में प्रयोग किया जाता है, तो समारोह सदस्य लागू था केवल विस्तारित रूप में। कोई इसी तर्क के साथ
वैकल्पिक पैरामीटर पैरामीटर सूची
मापदंडों पुनर्क्रमित कर रहे हैं से निकाल दिए जाते हैं ताकि वे तर्क सूची में इसी तर्क रूप में एक ही स्थिति पर होते हैं।
और आगे पर ...
मामले में पैरामीटर प्रकार दृश्यों {P1, P2, ..., पी एन} और {Q1, Q2, ..., QN} बराबर हैं> (यानी प्रत्येक पीआई के पास संबंधित क्यूई में एक पहचान रूपांतरण होता है), निम्नलिखित बेहतर फ़ंक्शन सदस्य निर्धारित करने के लिए टाई-ब्रेकिंग नियम लागू होते हैं।
यदि एमपी एक गैर-सामान्य विधि है और एमक्यू एक सामान्य विधि है, तो एमपी एमक्यू से बेहतर है।
अन्यथा, यदि एमपी अपने सामान्य रूप में लागू होता है और एमक्यू में पैराम्स सरणी होती है और केवल अपने विस्तारित रूप में लागू होती है, तो एमपी एमक्यू से बेहतर है।
अन्यथा, यदि एमपी ने एमक्यू की तुलना में अधिक पैरामीटर घोषित किए हैं, तो एमपी एमक्यू से बेहतर है। यह तब हो सकता है जब दोनों विधियों में पैरा एरे होते हैं और केवल विस्तारित रूपों में लागू होते हैं।
बोल्ड टाई तोड़ने नियम क्या इस मामले में आवेदन कर रहा है हो रहा है। विनिर्देश इस बात के बारे में विस्तार से बताता है कि परम सरणी को सामान्य और विस्तारित रूपों में कैसे माना जाता है, लेकिन आखिरकार अंगूठे का नियम यह है कि सबसे विशिष्ट ओवरलोड को संख्याओं और पैरामीटर के प्रकार के संदर्भ में बुलाया जाएगा।
ने उल्लेख बेहतर समारोह सदस्य संकल्प के साथ ऐसा करना संभव अंतर्दृष्टि के लिए अपने पिछले प्रश्न देखें हैं: http://stackoverflow.com/questions/2210519/why-does-params-behave -like - – ChaosPandion
तो यह सबसे विशिष्ट का उपयोग करता है, इसका मतलब यह है कि पहली विधि को कभी नहीं कहा जा सकता है? – Vaccano
वहां दिए गए विधि आमंत्रण के साथ, पहली विधि कभी नहीं बुलाई जाएगी। हालांकि, यदि आप 'MyCoolMethod (नई ऑब्जेक्ट [] {"HI", "test"}) का प्रयास करते हैं, तो, पहले को कॉल किया जाएगा, क्योंकि दूसरी विधि के एकल ऑब्जेक्ट पैरामीटर से कोई मिलान नहीं है। – womp