C#3.0新特性之扩展方法

不讲什么废话了,来点干的,首先您看下这个类的定义和实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExFunctions
{
    public static class TestClass
    {
        public static string SayHello(this string userName)
        {
            return string.Format("Hello,{0}", userName);
        }
    }
}

这是我在vs2008里面创建的一个类,这个ide可以选择.net framework版本,我选择的是3.5,上面这个类在.net framework 2.0中是一个另类,这种写法是C#3.0中的新特性,称之为“扩展方法",在一个非范型的静态类里面,我们通过声明一个带this参数的静态方法来实现扩展函数,扩展函数能够在参数类型的实例对象中添加方法,比如上面的函数,我就为string类型的对象添加了一个名为SayHello的函数,在使用的过程中,很是方便,使用代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExFunctions
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName = "jillzhang";
            string welcomeString = userName.SayHello();
            Console.WriteLine(welcomeString);
            Console.Read();
        }
    }
}

再看看这幅图,感觉3.0这个功能还是蛮有意义的,平时我们经常为了扩展一些类的行为,而继承类,出于不同目的,我们会产生一些子类,而这些子类在使用的时候,我们时刻要关注其类型,通过扩展方法,我们可以轻松的更改原类,为原类添砖加瓦,使用的时候,也不必考虑类型转换了,效率会因此提高一些,由此可见,MS的人性化作的真是非常到位了。



您还可以象使用静态函数一样使用扩展函数,如:

string welcomeString = TestClass.SayHello(userName);

所以,在我看来这个特征还是蛮贴心的。

jillzhang jillzhang@126.com

posted @ 2007-10-06 01:18  Robin Zhang  阅读(3364)  评论(12编辑  收藏  举报