在C#中,一个类中可能存在两个或多个同名但参数的数量、类型和顺序不同的方法,这称为方法重载。例如
void display() { ... }
void display(int a) { ... }
float display(double a) { ... }
float display(int a, float b) { ... }
这里,display() 方法被重载了。这些方法名称相同,但接受的参数不同。
注意:上述方法的返回类型并不相同。这是因为方法重载与返回类型无关。重载的方法可以具有相同或不同的返回类型,但它们必须具有不同的参数。
我们可以通过以下方式实现方法重载
1. 通过更改参数的数量
如果方法中的参数数量不同,我们可以重载该方法。
void display(int a) {
...
}
...
void display(int a, int b) {
...
}
这里,我们在一个类中有两个同名的方法 - display()。由于方法中的参数数量不同,可以存在多个同名的方法。例如:
using System;
namespace MethodOverload {
class Program {
// method with one parameter
void display(int a) {
Console.WriteLine("Arguments: " + a);
}
// method with two parameters
void display(int a, int b) {
Console.WriteLine("Arguments: " + a + " and " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display(100, 200);
Console.ReadLine();
}
}
}
输出
Arguments: 100 Arguments: 100 and 200
在上面的示例中,我们重载了display()方法
- 一个方法有一个参数
- 另一个带两个参数。
根据方法调用时传递的参数数量,会调用相应的方法。
p1.display(100)
- 调用带有单个参数的方法p1.display(100, 200)
- 调用带有两个参数的方法
2. 通过更改参数的数据类型
void display(int a) {
...
}
...
void display(string b) {
...
}
这里,我们有两个方法 - display(),它们的参数数量相同。由于方法中参数的数据类型不同,可以存在多个同名display()方法。例如:
using System;
namespace MethodOverload {
class Program {
// method with int parameter
void display(int a) {
Console.WriteLine("int type: " + a);
}
// method with string parameter
void display(string b) {
Console.WriteLine("string type: " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display("Programiz");
Console.ReadLine();
}
}
}
输出
int type: 100 string type: Programiz
在上面的程序中,我们使用不同类型的参数重载了display()方法。
根据方法调用时传递的参数类型,会调用相应的方法。
p1.display(100)
- 调用带有int
类型参数的方法p1.display("Programiz")
- 调用带有string
类型参数的方法
3. 通过更改参数的顺序
void display(int a, string b) {
...
}
...
void display(string b, int a) {
...
}
这里,我们有两个方法 - display()。由于方法中参数的数据类型顺序不同,可以存在多个同名display()方法,它们的参数数量和类型也相同。例如:
using System;
namespace MethodOverload {
class Program {
// method with int and string parameters
void display(int a, string b) {
Console.WriteLine("int: " + a);
Console.WriteLine("string: " + b);
}
// method with string andint parameter
void display(string b, int a) {
Console.WriteLine("string: " + b);
Console.WriteLine("int: " + a);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100, "Programming");
p1.display("Programiz", 400);
Console.ReadLine();
}
}
}
输出
int: 100 string: Programming string: Programiz int: 400
在上面的程序中,我们使用不同的参数顺序重载了display()方法。
根据方法调用时传递的参数顺序,会调用相应的方法。
p1.display(100, "Programming")
- 分别调用具有int
和string
参数的方法p1.display("Programiz", 400)
- 分别调用具有string
和int
参数的方法