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