विधि ओवरलोडिंग के साथ, आप एक ही फ़ंक्शन नाम के लिए एक ही दायरे में कई परिभाषाएँ रख सकते हैं। फ़ंक्शन की परिभाषा तर्क सूची में प्रकार और/या तर्कों की संख्या से एक दूसरे से भिन्न होनी चाहिए।
आइए एक उदाहरण देखते हैं। इसमें कॉल एक ही पैरामीटर के साथ मेथड में जाएगी -
उदाहरण
using System; class Student { static void DisplayMarks(int marks1 = 90) { Console.WriteLine("Method with one parameter!"); } static void DisplayMarks(int marks1, int marks2 = 95) { Console.WriteLine("Method with two parameters!"); } static void Main() { DisplayMarks(97); } }
अब देखते हैं कि अस्पष्ट कॉल क्या बनाता है। यहां भ्रम यह है कि दूसरी विधि को डिफ़ॉल्ट के रूप में दो तर्कों की आवश्यकता होगी, जबकि पहली मेथिड को डिफ़ॉल्ट होने के लिए एक तर्क की आवश्यकता होगी। यह अस्पष्टता पैदा करता है।
उदाहरण
using System; class Student { static void DisplayMarks(int marks1 = 90, int marks2 = 80) { Console.WriteLine("Method with two parameters!"); } static void DisplayMarks(int marks1, int marks2 = 80, marks3 = 98) { Console.WriteLine("Method with three parameters!"); } static void Main() { DisplayMarks(80); } }