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 {  

    // 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") - 分别调用具有intstring参数的方法
  • p1.display("Programiz", 400) - 分别调用具有stringint参数的方法
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战