随便玩玩之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