从ScottGu's Blogs上看到了关于Vs2008中.NET Framework3.5语言(Jeffry Zhao说这是 C#3.0的特性,自己见识太短了)的新特性,其中有一个叫做Extension Methods(http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx)

这功能让我激动不已。它可以为某一类型的变量(如string,int等)添加上我们自己增加的一些“额外”的方法,比如我们自己为一string 类型的的变量strEmail添加上一个IsValidEmailAddress方法,怎么样?这个方法是否心动?原来我们要实现这个功能着实是会费一番功夫,可是如今有了Extension Methods,很简单即可搞定它:
方法如下:
新添加一个静态类,比如代码为:

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Linq;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Xml.Linq;
12using System.Text.RegularExpressions;
13
14/**//// <summary>
15/// Summary description for MyStaticExtension
16/// </summary>
17public static class MyStaticExtension
18{
19    public static bool IsValidEmailAddress(this string strEmail)
20    {
21        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
22        return regex.Match(strEmail).Success;
23    }
24
25    public static bool IsBiggerThan10(this int intNumber)
26    {
27        if (intNumber > 10) return true;
28        return false;
29    }
30}
31

在这个类中有两个静态的方法,其中一个是IsValidEmailAddress(this string strEmail),另外一个是IsBiggerThan10(this int intNumber);
注意这两个方法均是静态的,而且你注意到了么,它的参数前都有一个this关键字来修饰,这就是告诉编辑器,要将string类型的变量加上该IsValidEmailAddress方法,将int类型的变量加上IsBiggerThan10的方法。OK,既然准备好了,我们就开始使用它:

首先,因为我们在该工程中只用到了一个命名空间,所以你在使用它的类中可以using MyStaticExention,也可以不using,二者均可
然后我们就可以直接在类中使用了:

1 string strEmail = "aa";
2 strEmail.IsValidEmailAddress();
1 int a = 10;
2  bool bl = a.IsBiggerThan10();

这个功能真让人振奋!

C#之 VS2008 之 Extension Methods相关推荐

  1. C#3.0 新特性系列(6) Extension Methods

    You can use Extension Methods to add methods to existing types without declaring a new derived type, ...

  2. 对接口运用扩展方法 Applying Extension Methods to an Interface 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-15...

    转载于:https://www.cnblogs.com/ganmk--jy/p/5568725.html

  3. vs2008中C#3.0语言的新特性

    看了YJingLee's Blog的文章,收获很大,以下文章转自http://www.cnblogs.com/lyj/archive/2008/01/08/1030525.html 总体来说,Visu ...

  4. .net 2.0升级到了.net 3.5,开发工具从vs2005转为vs2008

    前两天从.net 2.0升级到了.net 3.5,开发工具从vs2005转为vs2008 升级前的想法,主要是看到了.net 3.5的新的优良特性: 自动属性(Auto-Implemented Pro ...

  5. 9.Methods(二)

    4.Operator Overload Methods allow a type to define how operators should manipulate instances of the ...

  6. Advanced Linq - Dynamic Linq query library: Add support for 'Contains' extension

    原文链接: http://blog.walteralmeida.com/2010/05/advanced-linq-dynamic-linq-library-add-support-for-conta ...

  7. 再试译ScottGu's Posts 之 VS2008之语言特性--查询语法--New Orcas Language Feature: Query Syntax...

    学习一门新的语言,总要从其语法学起.为了方便大家学习,同时也为了自己学习,就将ScottGu的这篇关于3.5中增加的新的特性帖子译了出来.这次我翻译采用中汉对照的方式,不然像上次译的那个那样的话不但我 ...

  8. VS2008系列培训教程之四:What's new in C# 3.0 Visual Basic 9.0

    这篇文章是参考微软内部文档重新编写而成,感谢相关内容的各位作者的辛勤劳动! 其内容介绍如下: During this brief session, you will learn about some ...

  9. Extension Method - c#3.0

    Extension Method - c#3.0 Extension Method能够让你为一个已经存在的类添加方法,而不用去创建一个子类继承它. 具体做法: 定义一个静态的类来包含这个扩展方法. 定 ...

最新文章

  1. 简单介绍4种限流算法!(固定窗口计数器算法、滑动窗口计数器算法、漏桶算法、令牌桶算法)...
  2. php实现按时间排序_按时间排序的问题?
  3. Servlet的调试
  4. 一块电路板从“出生”到“成年”
  5. 河南科技大学计算机基础题库,河南科技大学大学计算机基础Excel基本操作选择题汇总...
  6. 思考问题:Python这两段等效代码内存占用为什么差别那么大?
  7. 用Html 和 Css来实现一个小小案例
  8. Android开发笔记(一百一十六)网络学习资源
  9. UE4有linux版本吗,ue4软件下载 rhinos软件 ue4
  10. 最新VMware16pro虚拟机的下载与安装
  11. Java 基本数据类型(四类八种)
  12. Excel表格怎么随机打乱顺序
  13. scratch ios html,scratch手机版
  14. 【深度学习】人物图片标签生成
  15. 达内java月考试题_达内java1512第二次月考(附答案)doc.doc
  16. html中td是什么模块,html td什么意思
  17. FFplay文档解读-20-音频过滤器五
  18. NodeJS 获取酷狗音乐
  19. 分享社交平台功能开源_需要考虑的3个开源社交平台
  20. PHPEclipse搭建PHP开发环境

热门文章

  1. 学计算机的八字,计算机教室八字格言
  2. Spark详解(六):Spark集群资源调度算法原理
  3. python读取视频流做人脸识别_基于OpenCV和Keras实现人脸识别系列——二、使用OpenCV通过摄像头捕获实时视频并探测人脸、准备人脸数据...
  4. Centos7.6下安装Python3.7
  5. IS服务器下做301永久重定向设置方法
  6. 面向对象——构造方法(重载)
  7. [BZOJ4994] [Usaco2017 Feb]Why Did the Cow Cross the Road III(树状数组)
  8. FreeMarker手册pdf
  9. pthread多线程编程的学习小结
  10. SQLServer-sysobjects-type