CS2L9——函数重载

函数重载

在同一语句块(class​ 或者 struct​)中
拥有一组名字相同,但是参数的数量不同 或者 参数的数量相同但参数的类型或者顺序不同的函数(方法)

作用:命名一组功能相似的函数 减少函数名的变量 避免命名空间的污染,提升代码可读性

注意!重载与返回值类型无关,只和 参数类型 个数 顺序相关
调用时 程序会自己根据传入的参数类型判断使用哪一个重载

可选参数不能重载!!!

同一个语句块中函数名相同,参数数量、类型、顺序不同的函数,我们就称为重载函数,注意!与返回值无关
作用:一般用来处理不同参数的同一类型的逻辑处理

例如下面的相加计算重载函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
static int CalcSum(int a, int b)
{
return a + b;
}
//参数数量不同
static int CalcSum(int a, int b, int c)
{
return a + b + c;
}
//数量相同,返回值类型不同
static float CalcSum(float a, float b)
{
return a + b;
}

//数量相同,参数类型不同
static float CalcSum(int a, float f)
{
return a + f;
}
//数量不同,顺序不同
static float CalcSum(float f, int a)
{
return f + a;
}
//ref和out
//ref和out可以理解成他们也是一种变量类型,所以可以用在重载中,但是ref和out不能同时修饰
static float CalcSum(ref float f, int a)
{
return f + a;
}

static void Main(string[] args)
{
Console.WriteLine(CalcSum(1, 2));
Console.WriteLine(CalcSum(1, 2, 3));
Console.WriteLine(CalcSum(1.1f, 1.2f));
Console.WriteLine(CalcSum(1, 1.2f));
Console.WriteLine(CalcSum(1.2f, 1));
float a = 1.0f;
Console.WriteLine(CalcSum(ref a, 1));
}

输出:

1
2
3
4
5
6
3
6
2.3000002
2.2
2.2
2