陈斌彬的技术博客

Stay foolish,stay hungry

扩展方法

扩展方法是C#中新增的很重要的特性之一。其对于LINQ的实现起着关键的作用。在.NET2.0时代是没有LINQ的,所以.NET2.0以及之前版本中的集合类在设计的时候没有预留用于LINQ的方法。为了在不破坏这个类现有封装的前提下又可以为其添加LINQ的支持就需要用到扩展方法。

扩展方法使用上类似于静态方法,但在本质上其是实例方法。这是由于.NET3.5的运行环境仍然为CLR2.0 所以语言不可能做很大的变革,这一切都是语法糖。

下面仍然通过一段代码来说明扩展方法的实现:

(代码出自:李永京 http://lyj.cnblogs.com

public static class Extensions
{
    public static bool IsValidEmailAddress(this string s)
    {
        Regex regex = new Regex(@"^[\w\.]+@([\
        w]+\.)+[\
        w]{
        2,4}$");
        return regex.IsMatch(s);
    }
}

如上代码所示,扩展方法为一静态方法,声明于一个静态类,其参数前加上一个this关键字,参数的类型表示这个扩展方法要对这个类型进行扩展。如上述代码表示其要对字符串类型进行扩展。

在应用上扩展方法被作为其扩展的类型的静态方法来调用。如下:

if (email.IsValidEmailAddress())
{
Response.Write("YJingLee 提示:这是一个正确的邮件地址");
}