Ta biết rằng trong một số ngôn ngữ lập trình như: Pascal, C,..Khi chúng ta định nghĩa các hàm thì các hàm phải khác tên nhau. Trong C# cho phép chúng ta định nghĩa các phương thức trùng tên nhau. Ta gọi đó là định nghĩa chồng phương thức. Khi các phương thức được định nghĩa trùng tên nhau thì giữa các phương thức phải khác nhau về kiểu giá trị trả về, số lượng đối và kiểu của các đối. Ta thấy rằng sự khác nhau đó là cần thiết để khi dịch chương trình thì chương trình dịch căn cứ vào đó mà phân biết giữa các hàm tùy thuộc vào đối mà chúng ta truyền vào cho hàm.
Ví dụ 2.1.6: Xây dựng chương trình tìm giá trị của một dãy số nguyên ---
Khung DL
Dữ liệu cụ thể 1 Dữ liệu cụ thể 2
Lớp
using System;
publicclass TimMax {
int n; int[] a;
public void KhoiTao() {
Console.Write("Nhap so phan tu cua mang n ="); n = Convert.ToInt16(Console.ReadLine()); a = new int[n];
for (int i = 0; i < n; ++i) {
Console.Write("a[{0}]=", i);
a[i] = Convert.ToInt16(Console.ReadLine()); }
}
public void KhoiTao(int on) {
n=on;
Console.WriteLine("So phan tu cua mang n={0}", n); a = new int[n];
for (int i = 0; i < n; ++i) {
Console.Write("a[{0}]=", i); a[i] = Convert.ToInt16(Console.ReadLine()); }
}
public int Max(int x, int y) {
return (x > y ? x : y); }
public int Max() {
int tg = a[0];
tg = Max(tg, a[i]); return tg;
}
}
publicclass Tester {
static void Main() {
TimMax m = new TimMax();
m.KhoiTao(); Console.WriteLine("Max cua day la:{0}", m.Max()); m.KhoiTao(5); Console.WriteLine("Max cua day la:{0}", m.Max()); }
}
---
Chú ý:
Một phương thức có thể gọi đến một phương thức cùng tên với nó.
Trong trường hợp có các hàm trùng tên trong chương trình, việc xác định
phương thức nào được gọi do chương trình dịch đảm nhiệm căn cứ vào đối tương ứng mà chúng ta truyền vào.