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

在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环境中,开发者可以利用只能感知功能,比较容易地选择扩展方法.如下图所示:

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

转载于:https://www.cnblogs.com/wwwzzg168/p/4121540.html

C#3.0中的扩展方法相关推荐

  1. .Net 2.0中使用扩展方法

    大家都知道扩展方法是不能直接在2.0中使用的 需要引用一个‍System.Core的dll 不过现在有更加简单的方法了 只要在工程项目中加入以下代码就OK啦 ‍namespace System.Run ...

  2. C#中的扩展方法学习总结

      版权声明:本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为C#中的扩展方法学习总结,本文 ...

  3. 如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

    .net 1.1中的解决方法(转) 1建立一个DataSetHelper类(DataSetHelper.cs) public class DataSetHelper ...{     public D ...

  4. 在.net 2.0/3.0程序中使用扩展方法

    .NET Framework 从2.0升级至3.0/3.5中,增加了不少编译器级别的语法糖,如var关键字.自动属性.Lambda表达式.扩展方法等等. 如果使用vs2008发布.net2.0程序时, ...

  5. 技术图文:C# 语言中的扩展方法

    背景 前段时间,在知识星球立了一个Flag,在总结 Leetcode 刷题的第五篇图文时遇到了扩展方法 这个知识点,于是先总结一下. 1.扩展方法概述 扩展方法能够向现有类型"添加" ...

  6. C#中的扩展方法,Linq,IO和多线程的定义和实例

    前段时间学C#的上转型,泛型,lambda表达式这些应用的理解很费劲.学过之后我多多的练习了几天,接下来继续复习C#的其他一些概念,说实在的这些知识点学过之后很容易忘,但是都是很重要的,所以发表在博客 ...

  7. C#3.0新特性 扩展方法

    扩展方法可以使我们为现有的添加方法,现有的类可是是CLB的也可以是自己定义的. 注意事项:   通过this修饰方法第一个参数  方法声明在静态类中  方法通过对象调用 重要注意事项:   扩展方法和 ...

  8. Tuscany SCA V1.0中的扩展机制和启动过程中的扩展点[11月29日更新]

    2007年9月24日Tuscany SCA 发布了V1.0版本的实现 .本文讲述的内容使用的就是基于这个版本的,代码下载地址 http://incubator.apache.org/tuscany/s ...

  9. 在Asp.net MVC framework中使用扩展方法创建Html Helper

    HtmlHelper提供了一些帮助的方法返回一个字符串来生成html. 在System.Web.Mvc.Html命称空间下有一些表单,控件,局部视图Helper方法.我将创建一个生成标签<inp ...

  10. C# 3.0 扩展方法

    扩展方法解决问题:以往对已存在的类库进行扩展,可行的方式直接对源代码进行修改或者直接派生. 扩展方法注意事项: 扩展方法必须被定义在一个静态类中,扩展方法自身必须是一个静态方法: 扩展方法中的首个参数 ...

最新文章

  1. 赠书 | 人工智能识万物:卷积神经网络的前世今生
  2. 旷视唐文斌:你到底给谁创造了什么样的价值?AI产品灵魂拷问
  3. 邬贺铨院士:十问边缘计算!
  4. 图像处理之特征描述与匹配
  5. faster-rcnn tensorflow windows demo运行
  6. 春运首日 广西桂林火车站向旅客“送万福”
  7. 同步升压与异步升压_单相220V转三相380V升压变频器
  8. 2008下mysql补丁_windows Server 2008 R2安装Mysql 8的打补丁顺序
  9. 基于Kinetis系列微控制器K60芯片的I2C接口函数程序说明1
  10. 2021-10-24
  11. lumaqq receiver
  12. shell编程三大神器之grep
  13. 【实用软件】多功能游戏工具箱-Watt Toolkit
  14. 想要彻底卸载Mac应用程序,还得要用这些方法才行
  15. 系统虚拟化- 原理与实现
  16. Linux:进程间通信(创建匿名管道,父子进程间通信,兄弟进程间通信)
  17. 初识C语言之详解char类型
  18. JavaScript中的参数传递
  19. 计算机网络化的例子,《计算机网络基础及典型案例》.pdf
  20. VERSA VSP-3501-16B电磁阀

热门文章

  1. 想要导航提示页_如何优化网站导航呢?
  2. html 边框轮廓,CSS Outline(轮廓)
  3. delphi 热成像摄像机源代码_红外热成像技术广泛应用于夜间及恶劣气候下目标的监控...
  4. c#位数不够0补充完_人教版四年级上册数学第六单元《除数是两位数的除法》
  5. java实时解析mysql日志,利用maxwell 组件实时监听Mysql的Binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费...
  6. 朗逸机器人_几张动图告诉你,工业机器人无所不能!
  7. python表格数据过滤复制到另外一个表格
  8. python-excel-openpyxl读取数据---更新完善--1
  9. go代码--数据结构
  10. python给图片加半透明水印_python给图片增加透明文字水印