我刚刚在秋季完成了C#的第一堂课,但是在我开始C#II之前,有些事情我仍然不明白并希望在冬季休息时清楚。
问题:重载方法究竟是什么?
答案 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)函数。
不同数量的参数或不同类型的参数或不同的参数顺序。
不能通过更改方法的返回类型来重载方法。因为单独的返回值不足以让编译器找出要调用的方法。此外,方法的返回类型不被视为方法签名的一部分。
另请注意,out
和ref
参数修改可以用于区分重载,如下所示:
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);
由于ref
和out
在过载意义上不相互区分。
并注意这样的重载:
void method(int x) => Console.Writeline(x);
void method(int x, int y = 0) => Console.Writeline(x * y);
这将编译并运行,但编译器将默认为第一个有一个参数的方法,直到你指定第二个参数,然后它将调用第二个方法。
答案 1 :(得分:0)
重载方法只是具有相同名称但签名不同的方法(允许不同类型/数量的参数)。