实践

扩展方法是C# 3.0中新加入的特性。MSDN中对扩展方法的定义是:扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。

以下以对一个字符串进行MD5加密为例。

如果不使用扩展方法~通常情况下我们写一个这样的方法

 public static string MD5Encrypt(string str)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}

在调用时使用

str2 = MD5Encrypt(str1); //str1是明文,str2是经过了MD5加密后的密文

如果使用扩展方法~那么我们需要写这样一个方法

 public static string MD5Encrypt(this string str)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}

调用时使用

str2=str1.MD5Encrypt();

扩展方法是静态方法~并且第一个参数要用this修饰~这个方法将作为第一个参数也就是带this参数的类的一个扩展方法~

在这里MD5Encrypt并不是string类的一个方法~但通过扩展方法~可以将MD5Encrypt当作string类的一个实例方法来调用。如果调用的方法和扩展方法的实现在不同的程序集~则还需要using扩展方法所属的程序集~

在写程序时~我们可能需要经常对字符串进行某种特殊的操作~如加密解密拆分等~以前我们可能是将这些方法写在一个类中~在需要时调用这个类中的方法~现在我们可以将这些方法写成扩展方法~这样~当我们在string类型的变量后按下 . 就会智能提示出这些自己写的扩展方法~

转载自:http://msdn.microsoft.com/zh-cn/windowsmobile/dd567296.aspx

webCast视频:C# 3.0 锐利体验系列课程(1):概览.wmv

C# 3.0 扩展方法[转载]的更多相关文章

  1. C#3.0扩展方法学习篇

     什么是类的扩展方法 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. MSDN Extension methods enable you to &q ...

  2. C#3.0 扩展方法

    扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual ...

  3. C# 3.0 扩展方法&接口

    namespace ExtensionInterfaceMethod { class Program { static void Main(string[] args) { //使用接口变量来调用扩展 ...

  4. C#3.0新特性之扩展方法介绍

    C#3.0扩展方法是给现有类型添加一个方法.现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类.以下是引用片段: //Demo--1 //扩展基本类型 namespace T ...

  5. c# 扩展方法奇思妙用基础篇八:Distinct 扩展(转载)

    转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distin ...

  6. [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法

    前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...

  7. C#学习笔记四: C#3.0自动属性&匿名属性及扩展方法

    前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...

  8. C# 3.0 特性之扩展方法

    今天,我们来聊一聊C#的扩展方法. C# 3.0中为我们提供了一个新的特性—扩展方法.什么是扩展方法呢?我们看一下MSDN的注解: 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新 ...

  9. C#3.0中的扩展方法

    在实际应用中,开发者完成代码的编译后,除非重新编译更改后的代码,否则开发者很难在原有代码中添加新的功能. 在C#3.0中,提供了一个扩展方法的新特性,可以使得开发者在编译后的程序集里边添加相关的方法, ...

随机推荐

  1. list转datatable c#

    private DataTable ToDataTable<T>(List<T> items) { var tb = new DataTable(typeof(T).Name) ...

  2. phalcon: 视图分层渲染,或包含其他页面

    一:视图分层显现: 比如:在一个页面中,头部.底部固定不变,只有中间部分随操作变换显示.那么可以将中间部分切出来,剩余部分用作固定框架,放入:app/views/layouts目录中,起名为:base ...

  3. EL表达式 (详解)(转)

    EL表达式      1.EL简介 1)语法结构        ${expression} 2)[]与.运算符      EL 提供.和[]两种运算符来存取数据.      当要存取的属性名称中包含一 ...

  4. <转>java 快速查找

    [Ct rl+T] 搜索当前接口的实现类 1. [ALT +/]    此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ ...

  5. ADO

    目 录 第1章 基础    1 1.1 引入ADO库文件    1 1.1.1 版本    1 1.2 初始化OLE/COM库环境    2 1.3 comdef.h    2 1.3.1 字符串编码 ...

  6. EF Core » 影子属性

    Caution:注意 This documentation is for EF Core. For EF6.x and earlier release see http://msdn.com/data ...

  7. OOAD与UML笔记

         UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OO ...

  8. 创建SSTP VPN,适应win7, 控制台导入证书

    1. 按 视窗+r 打开运行,运行 mmc命令 2.打开控制台窗口 3.在默认界面 按 Ctrl+m 快捷键 打开添加单元 窗口,然后在其左侧列表双击 证书 项 4.在打开的证书管理单元 第一步中选择 ...

  9. [maven] pom.xml 文件详解

    参考资料: http://blog.csdn.net/uohzoaix/article/details/7035307 http://www.cnblogs.com/qq78292959/p/3711 ...

  10. ThreadLocal 那点事儿

    原文出处: 黄勇 ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为应该叫做 ThreadLocalVaria ...