下面先通过一段程序告诉大家什么是扩展方法
代码语言:javascript复制 static class ExtendMethod
{
public static int GetAvg(this int sum)
{
return sum / 5;
}
}
代码语言:javascript复制 class Program
{
static void Main(string [] args)
{
int a = 10;
Console.WriteLine(a.GetAvg());
Console.ReadKey();
}
}
简单的说,一个可以通过“.”方式调用的方法就是扩展方法 我们通过上面的代码来看下扩展方法定义的时候需要注意的问题,和对上面代码的解释
- 扩展方法必须在静态类中定义
- 扩展方法是一种特殊的静态方法
- 第一个参数前加关键字this,int表示为所有的int类型添加扩展方法
- sum表示当前变量
什么时候使用扩展方法? 当我们使用的某个模块被封装在DLL中,现在需要对这个封装的类中添加一个方法的时候,这样的情况我们一般可以使用继承解决。 但是当类被sealed修饰的时候,类就无法继承了,这时我们就可以使用扩展方法
扩展方法定义
不带参数的扩展方法定义 static 方法名(this 目标类型 目标类型参数) 带参数的扩展方法定义 static 方法名(this 目标类型 目标类型参数,参数类型1,参数类型2,…)
当类本身的方法与扩展方法重名时,类本身的方法被优先调用