ด้วยวิธีการโอเวอร์โหลด คุณสามารถมีคำจำกัดความได้หลายแบบสำหรับชื่อฟังก์ชันเดียวกันในขอบเขตเดียวกัน คำจำกัดความของฟังก์ชันต้องแตกต่างกันตามประเภทและ/หรือจำนวนอาร์กิวเมนต์ในรายการอาร์กิวเมนต์
เรามาดูตัวอย่างกัน ในการนี้การเรียกจะไปที่เมธอดด้วยพารามิเตอร์ตัวเดียว -
ตัวอย่าง
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); } }