亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

掌握 C# 方法重载:核心概念、实战示例与最佳实践

C# 方法重载完全指南

全面掌握 C# 方法重载技巧:通过改变参数个数、类型、顺序实现同名方法多态,附带清晰代码示例与避坑指南。

在 C# 中,一个类可以包含多个同名但参数列表不同的方法,这被称为方法重载。例如:

void Display() { ... }
void Display(int a) { ... }
float Display(double a) { ... }
float Display(int a, float b) { ... }

上述 Display 方法被重载了四次。它们共享同一个方法名,但接受不同的参数组合。

注意:重载仅由参数列表(参数个数、类型、顺序)决定;返回类型可以不同,但不能仅靠返回类型区分重载。

1. 通过改变参数个数重载

最常见的重载方式:同名方法接受不同数量的参数。

void Display(int a) { ... }
void Display(int a, int b) { ... }

示例

using System;

namespace MethodOverload {
    class Program {
        // 单参数版本
        void Display(int a) {
            Console.WriteLine("参数: " + a);
        }

        // 双参数版本
        void Display(int a, int b) {
            Console.WriteLine("参数: " + a + " 和 " + b);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100);       // 调用单参数版本
            p1.Display(100, 200);  // 调用双参数版本
            Console.ReadLine();
        }
    }
}

输出

参数: 100
参数: 100 和 200

2. 通过改变参数数据类型重载

参数个数相同时,只要参数类型不同,即可构成重载。

void Display(int a) { ... }
void Display(string b) { ... }

示例

using System;

namespace MethodOverload {
    class Program {
        // int 参数版本
        void Display(int a) {
            Console.WriteLine("int 类型: " + a);
        }

        // string 参数版本
        void Display(string b) {
            Console.WriteLine("string 类型: " + b);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100);          // 调用 int 版本
            p1.Display("Programiz");  // 调用 string 版本
            Console.ReadLine();
        }
    }
}

输出

int 类型: 100
string 类型: Programiz

3. 通过改变参数顺序重载

当参数个数、类型均相同但顺序不同时,也构成重载。

void Display(int a, string b) { ... }
void Display(string b, int a) { ... }

示例

using System;

namespace MethodOverload {
    class Program {
        // int 优先,string 其次
        void Display(int a, string b) {
            Console.WriteLine("int: " + a);
            Console.WriteLine("string: " + b);
        }

        // string 优先,int 其次
        void Display(string b, int a) {
            Console.WriteLine("string: " + b);
            Console.WriteLine("int: " + a);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100, "Programming");   // 调用 int, string 版本
            p1.Display("Programiz", 400);     // 调用 string, int 版本
            Console.ReadLine();
        }
    }
}

输出

int: 100
string: Programming
string: Programiz
int: 400

最佳实践与避坑指南

C语言

  1. EPA 21号方法:泄漏检测与修复(LDAR)合规全攻略
  2. 掌握 C# 抽象类与抽象方法:实战指南
  3. 理解 C# 分部类与分部方法
  4. 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
  5. 掌握 C# 构造函数重载:灵活创建对象的多种姿势
  6. C# 方法完全指南:定义、调用、递归与参数传递
  7. C# 运算符重载完全指南:自定义类型的运算符行为定义
  8. C# 匿名方法:简化委托使用的实用技巧
  9. 理解Verilog任务:函数vs任务、语法与用法全解析
  10. 掌握 Verilog 显示任务:高效调试与日志记录
  11. 精通 Python 运算符重载:实战指南
  12. Java 注解类型完全指南:预定义、自定义与元注解