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

通过指定以下内容在 classrecordstruct 中声明方法:

  • 可选的访问级别,如 publicprivate。 默认值为 private
  • 可选的修饰符,如 abstractsealed
  • 返回值,或 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

 

posted @ 2023-03-11 16:26  冲浪的奶糖  阅读(62)  评论(0编辑  收藏  举报