মেথড ওভারলোডিং-এর মাধ্যমে, একই স্কোপে একই ফাংশন নামের একাধিক সংজ্ঞা থাকতে পারে। ফাংশনের সংজ্ঞাগুলো আর্গুমেন্ট লিস্টে আর্গুমেন্টের টাইপ এবং/অথবা সংখ্যা অনুসারে একে অপরের থেকে আলাদা হতে হবে।
নিচে একটি উদাহরণ দেখি। এখানে কলটি একক প্যারামিটার বিশিষ্ট মেথডে যাবে −
উদাহরণ
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); } }