zoukankan      html  css  js  c++  java
  • C#3.0中的扩展方法

    在实际应用中,开发者完成代码的编译后,除非重新编译更改后的代码,否则开发者很难在原有代码中添加新的功能.

        在C#3.0中,提供了一个扩展方法的新特性,可以使得开发者在编译后的程序集里边添加相关的方法,从而很容易地扩展原有的功能.

    1、扩展方法的定义 代码生成器

    定义扩展方法时,首先这个扩展方法要被定义在一个静态类中(程序集加载时自动加载),因此这个扩展方法也必须是一个静态方法。其次,在扩展方法的参数列表中,需要在第一个参数类型的前面添加关键字this作为修饰符,而紧跟其后的就是扩展类的名称。如下所示:

    代码:扩展方法的定义

    static class MyExtensions    {        public static string  GetAssemblyName(this object obj)        {             return obj.GetType().Name;        }    }

    在上述代码中,定义了一个静态类MyExtension,其中定义了一个扩展方法GetAssemblyName()。在该方法的参数列表中,使用了关键字this来修饰object类型,将扩展方法与object相关联。因此,对于任何object对象和继承了object类的类,都可以使用GetAssemblyName()方法,从而扩展了object的方法。

    2、扩展方法的使用

        使用扩展方法,既可以调用关联类型实例化对象的扩展方法,也可以直接调用静态类中的扩展方法,其中的方法参数输入关联类型。

    代码: 实例化对象的扩展方法

    static void Main(string[] args)        {            object obj = new object();            obj.GetAssemblyName();        }

    在代码中,定义了一个object类型的参数obj,并调用obj类型的扩展方法GetAssemblyName,获取Assembly的名称.

    当书写代码时,在VS环境中,开发者可以利用只能感知功能,比较容易地选择扩展方法.如下图所示:


     

    此外还可以针对泛型类型添加扩展方法,这样开发者就可以在制定的泛型类中使用扩展方法。俺还不是很理解泛型,暂时不显摆了。

  • 相关阅读:
    软件工程结课总结
    第13次作业--邮箱的正则表达式
    第12次作业--你的生日
    第10次作业
    找回感觉的练习
    第四次博客作业-结对项目
    Java16周作业
    Java 15周作业
    Java 14 周作业
    第13周作业集
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/4121540.html
Copyright © 2011-2022 走看看