C#扩展方法的应用

来源:互联网 发布:qq游戏大厅 mac 编辑:程序博客网 时间:2024/04/29 01:08

C#扩展方法用于扩展指定类型的功能。扩展方法可以单独定义在外部程序集中。

本例中首先建立一个外部类项目ExtMethodDefine,定义一个类Tool,而且此类必须是静态的非泛型的。代码如下:

 

然后定义一个主程序项目ExtMethod,类名为ExtMethod,因为要调用扩展方法,添加刚才建立的外部程序集ExtMethodDefine.dll,导入命名空间ExtMethodDefine。

运行结果为:

 1、代码分析      

        扩展方法第一个参数代表被扩展的类型实例,必须用this修饰,在扩展方法(this Object e)里,this修饰第一个参数是object,即所有类型都可以调用这个方法,所以声明4个不同类型的变量a,b,c,d,都可以调用扩展方法DisTestObj()。

        在扩展方法DisTestStr(this String e,string e2,int e3),this修饰第一个参数是string,即所有string类型都可以调用这个方法,第二个和第三个参数e2,e3才是扩展类型实例传递的第一个和第二个参数。

        另外发现字符串的初值,作为this所指定的参数传递进来了。

2、定义扩展方法的方法如下所示

    public static class 类名称
    {
        public static 返回类型 方法名称(this 被扩展类型 参数,其他参数)
        {
            方法体

        }

    }

 3、总结扩展方法的特殊性主要有以下几点

        1)、扩展方法所属类必须是静态非泛型,扩展方法也是静态方法

        2)、扩展方法的第1个参数为被扩展的类型实例,而且必须用this修饰

        3)、扩展方法从第2个参数开始,才是扩展类型实例传递的参数列表,第2个和第3个参数才是扩展类型实例传递的第1个和第2个参数,以此类推

        4)、被扩展类型实例,像调用类型内部定义的方法一样来使用扩展方法

        5)、扩展方法表面上像调用类型内部定义的方法一样,本质仍然是静态方法的调用,只是被扩展的类型成为了第1个参数。如:例子中x.DisTestObj();实际执行代码Tool.DisTestObj(string x)

 

原创粉丝点击