24/05/2018, 15:46

Định nghĩa chồng hàm

Trong cùng một lớp chúng ta có thể định nghĩa các hàm trùng tên nhau, ta gọi đó là sự chồng hàm. Nếu như trong cùng một lớp các hàm trùng tên nhau thì để máy phân biệt giữa các hàm thì các hàm phải khác nhau về số đối, kiểu của các đối và giá trị trả về. ...

Trong cùng một lớp chúng ta có thể định nghĩa các hàm trùng tên nhau, ta gọi đó là sự chồng hàm. Nếu như trong cùng một lớp các hàm trùng tên nhau thì để máy phân biệt giữa các hàm thì các hàm phải khác nhau về số đối, kiểu của các đối và giá trị trả về. Giả sử trong cùng một lớp hai hàm có cùng tên là max, có cùng số lượng đối là hai thì để máy phân biệt được giữa hai hàm này khi nó được gọi ra sử dụng thì hai hàm này phải khác nhau về kiểu của các đối.

Ví dụ: Nhập vào ba số nguyên a,b,c từ bàn phím. Sau đó cho biết giá trị lớn nhất của hai số nguyên bất kỳ và của ba số nguyên đó.

using System;

class VD

{

static int a,b,c;

static void Nhap()

{

Console.Write("Nhap a=");a=int.Parse(Console.ReadLine());

Console.Write("Nhap b=");b=int.Parse(Console.ReadLine());

Console.Write("Nhap c=");c=int.Parse(Console.ReadLine());

}

static int Max(int x,int y)

{

return x>y?x:y;

}

static int Max(int x,int y,int z)

{

int tg=Max(x,y);/*Đây không phải là gọi đệ quy mà chính là gọi một hàm tính Max của hai số ở phía trên ra sử dụng*/

tg=Max(tg,z);

return tg;

}

static void Main()

{

Nhap();

Console.WriteLine("Max({0},{1})={2}",a,b,Max(b,c));

Console.WriteLine("Max({0},{1},{2})={3}",a,b,c,Max(a,b,c));

Console.ReadKey();

}

}

-----------------------------------------------------------------------------------------------

0