c#中的扩展方法详解

c#中的扩展方法详解

3695发表于2014-11-08

c#的扩展方法是让我们轻易的扩展一个类型,比如int,string,自定义的一个类,可以在不用重新编译和修改原来的代码的情况下轻松的为原来的类型增加新的行为(函数或属性)。扩展方法是从.net 3.5开始推出的。所以要使用这个特性必须要求.你的类库使用的是net 3.5及以上。下面看一个简单的例子

public static class Extensions
{
    public static string GetFirstThreeCharacters(this String str)
    {
        if(str.Length < 3)
        {
            return str;
        }
        else
        {
            return str.Substring(0,3);
        }
    }
}
以上扩展方法是获取一个字符串的前3个字符。使用方法:
string str="HelloWorld";
str = str.GetFirstThreeCharacters();
最后,扩展方法其实有三个关键的地方。

一、要是一个静态类,

二、方法是public 静态方法,

三、方法的参数签名是this+要扩展的类型。

其实在.net的自带的类库中已经有很多地方都用到了扩展方法,尤其是linq中。比如:

List的OrderBy,Average,Max等等。选中List的OrderBy,按F12查看会看到以下代码:

可以看到全是扩展方法,我们之所以能用方法的对List进行排序,查找最大值,全是这些内置的扩展方法的功劳。清楚C#的扩展方法之后你自己也可以适合自扩展方法,在不改变破坏原来的代码的前提下。

小编蓝狐