C# 扩展方法

一、概述

什么情况下会用到扩展方法?当项目原有的类型已经确定,但现需求往类型里添加方法,在不改动源代码的情况下,就需要使用扩展方法。

当现有类型想要在原有基础上增加或改变一些功能(方法),扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型,保留了类型的封装性。

二、定义

 

 三、示例 

  该项目中关于Person类字段和方法都已确定,但是在该项目完成之前boss发话要给Person添加一个需求,添加一个Preson类共有的 Hobby 方法。由于项目架构都已经确定,所以为了在不修改源代码的情况下,我们用 扩展方法 来实现。我们新添加一个扩展类 PersonExtension ,添加Hobby方法:

    public class Person
    {
        public string Name { get; set; }
 
        public int Age { get; set; }
 
        public bool Gender { get; set; }
    }    

    public static class PersonExtension
    {
        public static void Hobby(this Person p)
        {
            Console.WriteLine("我们都有爱好");
        }
    }

四、总结

1、扩展方法所在的类必须声明为static。

2、扩展方法必须声明为public和static。

3、扩展方法的第一个参数必须包含关键字this,并且在后面指定扩展的类的名称。

4、实例方法优先于扩展方法执行(允许有同名的实例方法和扩展方法) 

5、在空引用上可以调用扩展方法 

6、扩展方法能够被继承

7、至少有一个参数,以此来使用this标记第一个参数,系统方能识别是否为扩展方法

 

posted @ 2022-07-12 11:03  Darius丶段  阅读(79)  评论(0)    收藏  举报