Administrator
发布于 2025-10-05 / 0 阅读
0
0

C#7.4: 方法的重载

一、方法重载的典型例子

Console.WriteLine() 本身就是方法重载的典型例子:

Console.WriteLine("Hello");   // 输出字符串
Console.WriteLine(100);       // 输出整数
Console.WriteLine(3.14);      // 输出小数

虽然方法名相同,但参数不同,所以能打印不同类型的数据。

二、方法重载是什么?

方法重载是指:在同一个类中,可以有多个以有多个同名不同参的方法定义。

注:编译器会根据你调用时传入的参数,自动选择合适的方法。

三、方法重载的规则

  • 方法名必须相同

  • 参数的 个数类型 必须不同。

  • 返回值不同不算重载(必须参数不同才行)。

四、方法重载的好处

  • 让代码更简洁。

  • 逻辑更清晰。

  • 同一个功能,可以有多种调用方式。

五、示例:Add()

写一个Add()方法,可以计算整数与浮点数,Add(int, int)`与Add(double, double),同名不同参数

class Calculator
{
    // 加法:两个整数
    public int Add(int a, int b)
    {
        return a + b;
    }
​
    // 加法:三个整数
    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }
​
    // 加法:两个小数
    public double Add(double a, double b)
    {
        return a + b;
    }
}
​
class Program
{
    static void Main()
    {
        Calculator calc = new Calculator();
​
        Console.WriteLine(calc.Add(2, 3));       // 输出 5
        Console.WriteLine(calc.Add(2, 3, 4));   // 输出 9
        Console.WriteLine(calc.Add(2.5, 3.5));  // 输出 6.0
    }
}

六、示例:Print()方法

要求:自己写一个 Print 方法,能打印整数、字符串、浮点数,

七、示例:反例

参数一样但返回类型不同,不算重载

int Add(int a, int b) { return a + b; }
double Add(int a, int b) { return a + b; }  // ❌ 会报错

八、总结

  • 重载 = 同名不同参

  • 参数可以不同:数量不同类型不同顺序不同

  • 常用在:打印、数学计算、格式化输出等场景。


练习

题目1:写一个 SayHello() 方法

重载为:

  • 无参数 → 输出“Hello!”

  • 有一个 string name 参数 → 输出“Hello, name!”

题目2:写一个 Max() 方法

重载为:

  • 传入两个整数,返回最大值

  • 传入两个小数,返回最大值

  • 传入三个整数,返回最大值

题目3:写一个Print()方法

*要求:写一个 Print 方法,支持打印整数、字符串和小数。**

  • 定义三个重载方法:

    • Print(int number)

    • Print(string text)

    • Print(double number)

  • Main 方法里分别调用这三种方法。

Print(100);
Print("Hello C#");
Print(3.14);

题目4:写一个Area()方法

要求:能计算不同图形的面积。

  • Area(int side) —— 计算正方形面积

  • Area(int length, int width) —— 计算矩形面积

  • Area(double radius) —— 计算圆的面积(πr²,用 3.14 替代 π)

Console.WriteLine(Area(5));        // 正方形面积
Console.WriteLine(Area(5, 10));    // 矩形面积
Console.WriteLine(Area(2.5));      // 圆的面积

题目5:写一个 Add 方法**

要求:支持两数相加、三数相加、以及两个小数相加。**

  • Add(int a, int b)

  • Add(int a, int b, int c)

  • Add(double a, double b)

尝试调用:

Console.WriteLine(Add(2, 3));      
Console.WriteLine(Add(1, 2, 3));  
Console.WriteLine(Add(2.5, 3.5)); 

参考答案:

class Calculator
{
    // 加法(两个整数)
    public int Add(int a, int b)
    {
        return a + b;
    }
​
    // 加法(两个小数)
    public double Add(double a, double b)
    {
        return a + b;
    }
​
    // 加法(三个整数)
    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }
}

题目6: 写一个 Greet 方法,

要求:

  • Greet() —— 输出 “你好!”

  • Greet(string name) —— 输出 “你好,某某!”

  • Greet(string name, int age) —— 输出 “你好,某某,你今年X岁了!”

👉 提示: 调用:

Greet();
Greet("小明");
Greet("小红", 18);

题目7:写一个 Count 方法,

要求: 能统计不同类型数组的长度。

  • Count(int[] numbers) —— 输出整数数组的元素个数

  • Count(string[] words) —— 输出字符串数组的元素个数

👉 提示

int[] nums = {1, 2, 3, 4};
string[] names = {"Tom", "Jerry"};
​
Console.WriteLine(Count(nums));    // 输出 4
Console.WriteLine(Count(names));   // 输出 2

练习总结

  1. 方法重载的基本概念(同名不同参)。

  2. 如何根据 参数个数参数类型 来区分重载方法。

  3. 在真实场景里,重载方法能让代码更直观。


评论