C# 方法重载
提示
- 定义方法重载:C#中的方法重载指的是在同一个类中存在多个同名方法,但这些方法的参数数量、类型或顺序各不相同。
- 重载实现方式:方法重载可以通过改变参数的数量、数据类型或者参数的顺序来实现,使得同一方法名可以适应不同的使用场景。
- 重载方法的调用:调用重载方法时,系统根据传递的参数数量、类型或顺序来决定调用哪一个具体的方法实现。
在 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 {
// 带一个参数的方法
void display(int a) {
Console.WriteLine("参数: " + a);
}
// 带两个参数的方法
void display(int a, int b) {
Console.WriteLine("参数: " + a + " 和 " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display(100, 200);
Console.ReadLine();
}
}
}
输出
参数: 100
参数: 100 和 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 {
// 带 int 参数的方法
void display(int a) {
Console.WriteLine("int 类型: " + a);
}
// 带 string 参数的方法
void display(string b) {
Console.WriteLine("string 类型: " + 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 {
// 带有 int 和 string 参数的方法
void display(int a, string b) {
Console.WriteLine("int: " + a);
Console.WriteLine("string: " + b);
}
// 带有 string 和 int 参数的方法
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
参数调用方法