请解释C#中扩展方法的定义及其实现方式。
考察说明
考查对C#扩展方法概念及实现语法的掌握。
回答思路
- 【回答框架 1】扩展方法是一种静态方法,允许在不修改原始类定义的情况下向现有类型添加新方法。它通过静态类中的静态方法实现,第一个参数使用this关键字指定要扩展的类型。
- 【回答框架 2】实现时,必须将扩展方法放在非泛型静态类中,且第一个参数前加this修饰符,后续参数为普通参数。调用时,通过命名空间引入,可像实例方法一样直接调用。
- 【回答框架 3】扩展方法的优先级:如果类本身有同名实例方法,则优先调用实例方法。扩展方法不能访问被扩展类型的私有成员,只能访问公共成员。
- 【关键点 1】扩展方法定义在静态类中,是静态方法,第一个参数用this修饰。
- 【关键点 2】调用时需引入命名空间,且扩展方法语法上像实例方法。
- 【关键点 3】扩展方法无法访问私有成员,优先级低于实例方法。
- 【易错点 1】误以为扩展方法可以覆盖实例方法,实际实例方法优先。
- 【易错点 2】忘记引入命名空间导致无法调用。
- 【易错点 3】扩展方法只能通过静态类调用,如果写成实例方法会报错。