Với nạp chồng phương thức, có thể có nhiều định nghĩa cho cùng tên hàm trong cùng phạm vi, khác nhau về kiểu/số tham số.
Ví dụ: gọi phương thức với một tham số:
Ví dụ
using System;
class Student {
static void DisplayMarks(int marks1 = 90) {
Console.WriteLine("Phương thức một tham số!");
}
static void DisplayMarks(int marks1, int marks2 = 95) {
Console.WriteLine("Phương thức hai tham số!");
}
static void Main() {
DisplayMarks(97);
}
}
Gây ra ambiguous call: phương thức thứ hai cần hai tham số default, phương thức thứ nhất cần một default. Gây nhầm lẫn.
Ví dụ ambiguous
using System;
class Student {
static void DisplayMarks(int marks1 = 90, int marks2 = 80) {
Console.WriteLine("Phương thức hai tham số!");
}
static void DisplayMarks(int marks1, int marks2 = 80, int marks3 = 98) {
Console.WriteLine("Phương thức ba tham số!");
}
static void Main() {
DisplayMarks(80);
}
}