当我们想为一个类增加一个方法,但该类是系统提供的类,无法修改其源代码;且该类是一个密封类,无法继承它;或者是其他设计原因,我们无法通过修改或继承来为该类添加方法时,我们就可以使用扩展方法。
在如今的开发中,扩展方法是一种特别有用的工具,事实上,几乎整个LINQ库都是通过扩展方法来实现的。
下面我随便举一个例子,比如我现在要给Form类添加一个方法:
//首先要声明一个类,该类必须声明为“static”,命名一般为“Extend+目标类名”
public static class ExtendForm
{
//声明我们想要添加的方法,该方法必须声明为“public static”
//方法的参数必须包含关键字this作为它的第一个参数类型,并在后面跟上它扩展的类的名称
public static void Print(this Form myForm)
{
Console.WriteLine("我是Form类的对象");
}
}
//测试:
class Program
{
static void Main(string[] args)
{
Form myForm = new Form();
myForm.Print();
}
}
//运行结果:
我是Form类的对象
从扩展方法的参数可以看出,我们要扩展的类不能是静态类,因为静态类无法拥有实例。