C#重载方法

时间:2015-12-28 05:26:16

标签: c# methods

我刚刚在秋季完成了C#的第一堂课,但是在我开始C#II之前,有些事情我仍然不明白并希望在冬季休息时清楚。

问题:重载方法究竟是什么

2 个答案:

答案 0 :(得分:3)

具有相同名称但签名不同的两种方法称为重载方法。在编译时,即使方法名称相同,编译器也会根据方法签名识别方法。

void Add(int x, int y)
{
    Console.WriteLine("Add int");
}
void Add(double x, double y)
{
    Console.WriteLine("Add double");
} 

这里Add(double x,double y)重叠第一个函数Add(int x,int y)同名不同的签名。 如果我们调用Add(4,2),它将调用Add(int x,int y)函数 如果我们调用Add(4.0,2.0),它将调用Add(double x,double y)函数。

方法重载的标准。

  1. 同名不同的签名。
  2. 不同数量的参数或不同类型的参数或不同的参数顺序。

  3. 不能通过更改方法的返回类型来重载方法。因为单独的返回值不足以让编译器找出要调用的方法。此外,方法的返回类型不被视为方法签名的一部分。

  4. 另请注意,outref参数修改可以用于区分重载,如下所示:

    void method1(int x);
    void method1(out int x);
    
    void method2(char c);
    void method2(ref char c);
    

    但是,你不能这样做:

    void method(out int x);
    void method(ref int x);
    

    由于refout在过载意义上不相互区分。 并注意这样的重载:

    void method(int x) => Console.Writeline(x);
    void method(int x, int y = 0) => Console.Writeline(x * y);
    

    这将编译并运行,但编译器将默认为第一个有一个参数的方法,直到你指定第二个参数,然后它将调用第二个方法。

答案 1 :(得分:0)

重载方法只是具有相同名称但签名不同的方法(允许不同类型/数量的参数)。