सी # है एकल प्रेषण का उपयोग करता है, जिसमें अधिभारित विधियां शामिल हैं। आप कोड है जब
stringBuilder.Append(parameter);
डिस्पैचर सभी तरीकों stringbuilder की क्लास पर परिभाषित पर लग रहा है, और सही एक पाता है।
एकाधिक प्रेषण उदाहरण के लिए, आइए प्रोलॉग देखें (जो कि मैं सोच सकता हूं)। आप इस तरह के रूप में prolog में एक समारोह को परिभाषित कर सकते हैं:
func(Arg1, Arg2) :- ....body....
यह किसी भी वर्ग के अंदर लेकिन एक वैश्विक दायरे में परिभाषित नहीं है। फिर, आप किसी भी दो तर्कों पर func(Arg1, Arg2)
पर कॉल कर सकते हैं और यह फ़ंक्शन कॉल किया जाएगा। आप अधिक भार की तरह कुछ चाहते हैं, आप समारोह के अंदर तर्क प्रकारों को मान्य करने के लिए, और इसे परिभाषित कई बार किया है:
func(Arg1, Arg2) :- is_number(Arg1), is_string(Arg2), ....body....
func(Arg1, Arg2) :- is_string(Arg1), is_list(Arg2), ....body....
func(Arg1, Arg2) :- is_number(Arg1), is_list(Arg2), ....body....
फिर, किसी भी दो तर्क प्रकारों आप भेजना होगा दोनों की जाँच की जानी होगा - जो एक से अधिक प्रेषण है अंश।
संक्षेप में, एकल प्रेषण केवल पहले तर्क (हमारे पहले उदाहरण, स्ट्रिंगबिल्डर) में परिभाषित विधियों को देखता है, फिर अन्य तर्कों का उपयोग करके कॉल करने के लिए सही ओवरलोड को हल करता है। एकाधिक प्रेषण में वैश्विक दायरे में परिभाषित विधियों/कार्यों के तरीके हैं और ओवरलोड रिज़ॉल्यूशन के दौरान सभी तर्कों का व्यवहार करते हैं।
मुझे आशा है कि मैं अपने आप को स्पष्ट कर दिया है, यह एक बहुत ही कठिन विषय है।
अद्यतन: मैं उल्लेख करने के लिए, कई प्रेषण क्रम में क्या होता है, जबकि एकल प्रेषण संकलन समय पर होता है भूल गया।
अद्यतन # 2: जाहिर है, यह सच नहीं था।
में असुविधाजनक रूप से दूर था मेरी पसंदीदा भाषाओं में से एक। उम्मीद है कि मुझे भविष्यवाणी मिल गई है, हालांकि मैंने वर्षों से इसका इस्तेमाल नहीं किया है। – configurator
दोनों एकल और एकाधिक प्रेषण या तो संकलन समय या रनटाइम पर किया जा सकता है। गतिशील प्रेषण रनटाइम पर बाध्यकारी कोड के लिए शब्द है। –
@ बिल: हाँ, लेकिन एकाधिक प्रेषण के लिए उपयोग किए जाने वाले प्रकार रनटाइम प्रकार हैं और एकल प्रेषण (तर्क के लिए) के लिए उपयोग किए जाने वाले प्रकार संकलित समय प्रकार हैं। क्या मैं यहाँ गलत हूँ? – configurator