【问题标题】:C# overloaded methodsC# 重载方法
【发布时间】:2016-04-01 23:34:06
【问题描述】:

我刚刚在秋季完成了 C# 的第一堂课,但有些东西我仍然不明白,想在开始 C# II 之前在寒假期间弄清楚。

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

【问题讨论】:

标签: c# methods


【解决方案1】:

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

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. 无法通过更改方法的返回类型来重载方法。因为仅返回值不足以让编译器确定调用哪个方法。此外,方法的返回类型不被视为方法签名的一部分。

另请注意,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);

这将编译并工作,但编译器将默认使用具有一个参数的第一个方法,直到您指定第二个参数,然后它将调用第二个方法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多