跳到主要内容

C# 方法重载

提示
  1. 定义方法重载:C#中的方法重载指的是在同一个类中存在多个同名方法,但这些方法的参数数量、类型或顺序各不相同。
  2. 重载实现方式:方法重载可以通过改变参数的数量、数据类型或者参数的顺序来实现,使得同一方法名可以适应不同的使用场景。
  3. 重载方法的调用:调用重载方法时,系统根据传递的参数数量、类型或顺序来决定调用哪一个具体的方法实现。

在 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") - 分别以 intstring 参数调用方法
  • p1.display("Programiz", 400) - 分别以 stringint 参数调用方法