扩展方法
扩展方法所在的类和扩展方法必须是静态的 并且扩展方法第一个参数是要扩展的类名 并在this
Person person = new Person();
public static class Extension
{
public static void ExtensionMethod(this Person p)
{
.......;
}
}
person.ExtensionMethod();
当person调用 ExtensionMethod()时,C# Compiler 会把这段Source Code 编译成Static Method 的IL Code。也可以理解为
编译器做了这样的处理,person.ExtensionMethod(); => ExtensionMethod(person);
C# Compiler 编译的过程是这样的:
- 首先查看Person类中是否有ExtensionMethod()方法,有的话,直接调用;
- 如果没有,在相应的NameSpace 当中,查找static Class,看看这些static Class当中,是否有public static void ExtensionMethod(this Person p) 这样的方法,如果也没有,编译通不过。