.Net 扩展方法
概要:
我相信很多人像我一样,都在有意无意使用着"扩展方法"这个技术,但基本都不用自己手动写个扩展方法来进行开发,在这里我自己做一下"扩展方法"的总结以及简单小应用.
正文:
1.概念性的东西:
首先,扩展方法本质就是静态方法,编译后,其实就是通过静态类调用静态方法实现的.可以跟实例方法构成重载,但是优先调用实例方法.并且,在父类上定义的扩展方法可以在子类使用.
2.实际代码:
/// <summary>
/// 此方法的第一个参数必须以this开头,并且指定此方法是扩展自哪个类型上的
/// </summary>
public static class myExpandClass
{
public static string myExpandFunc(this int InputParam)
{
return "InputParam:" + InputParam.ToString();
}
}
static void Main(string[] args)
{
int intput = 19;
string returnValue=intput.myExpandFunc();
Console.WriteLine(returnValue);
}
结果:InputParam:19
这样,就完成了一个在Int类型下的扩展方法myExpandFunc();
3.扩展内容:
从图中可以看到,返回值为string,扩展在int类型上,那么可以想象到根据返回值的不同,又要写一堆不同扩展方法,根据不同的扩展类型又要分别写一堆不同的扩展方法,着很明显是不合理的.但微软提供了很好的解决方法的演示:
由上图可以看出,一套扩展在IEnumerable<T>泛型接口的扩展方法,现在应该知道上面提出问题的解决方案了.