随便玩玩之C# 13 方法重载
随便玩玩之C# 13 方法重载
方法重载就是类中可以定义多个名称相同的方法,但是参数数量或类型不同。
把方法比作扳手,可以通过调节旋转涡轮来适应大小不同的螺丝。
调节前是这样的。

调节后是这样的。

把一个扳手当作多个扳手使用。
C#中到处都是方法重载。Console.WriteLine()方法就有多个重载。只要符合方法的参数形式就能正确执行。

参数不同,调用的方法就不同。
using System;
namespace MethodOverloading
{
internal class Program
{
static void Main(string[] args)
{
// 调用的是public static void WriteLine(string? value);
Console.WriteLine("Hello World!");
// 调用的是public static void WriteLine(int value);
Console.WriteLine(2 + 3);
// 调用的是public static void WriteLine(string format, object? arg0);
Console.WriteLine("我有{0}个核桃",6);
Console.ReadKey();
}
}
}
1.方法签名
MSDN:
通过指定以下内容在
class、record或struct中声明方法:
- 可选的访问级别,如
public或private。 默认值为private。- 可选的修饰符,如
abstract或sealed。- 返回值,或
void(如果该方法不具有)。- 方法名称。
- 任何方法参数。 方法参数在括号内,并且用逗号分隔。 空括号指示方法不需要任何参数。
这些部分一同构成方法签名。
出于方法重载的目的,方法的返回类型不是方法签名的一部分。 但是在确定委托和它所指向的方法之间的兼容性时,它是方法签名的一部分。
2.方法重载
还是两个整数相加的例子。上一节的sum()方法只能用来两个整数相加。如果传入小数点的数值就会出错。

解决办法,就是再写一个同名方法,但是输入参数不同。
using System;
namespace MethodOverloading
{
internal class Program
{
static void Main(string[] args)
{
// 调用的是static int Sum(int x,int y)
Console.WriteLine(Sum(3, 5));
// 调用的是static double Sum(double x,double y)
Console.WriteLine(Sum(2.3, 5));
Console.ReadKey();
}
// 输入的是整数型参数,返回的也是整数数值。
static int Sum(int x,int y)
{
return (int)(x + y);
}
// 输入的是双精度浮点数参数,返回的也是双精度浮点数数值。
static double Sum(double x,double y)
{
return (double)(x + y);
}
}
}
运行结果。

参考资料:
https://baike.baidu.com/item/%E6%96%B9%E6%B3%95%E9%87%8D%E8%BD%BD/2344236
https://zhuanlan.zhihu.com/p/529086603
https://www.cnblogs.com/qy1234/p/11826979.html

浙公网安备 33010602011771号