1,如果在某些情况下,我们不能改动类的源码,这时如果要想给对象添加功能的话,就要使用扩展方法。
2,扩展方法是静态的。
3,扩展方法中,可以访问多扩展类型中,所有公共方法和属性。
4,如果扩展方法与类中的方法同名,那么扩展方法就不被调用,已有的方法优先。
5,如下类
已有类ClassA,现要为它加一个方法FunctionB
复制代码 代码示例:
namespace Object
{
class ClassA
{
public ClassA(int a)
{
this.A = a;
}
public int A
{
get;
set;
}
public void FunctionA()
{
this.A--;
}
}
}
添加扩展方法如下:
复制代码 代码示例:
namespace Object
{
//此处不可定义Public,编译错误
static class ClassAExtension
{
/*其中this ClassA clsA是必须的,
这告诉编译器,这个方法FunctionB是ClassA的一部分。
如果需要传其他参数,只需要在this ClassA clsA后面添加即可,
如: FunctionB(this ClassA clsA, int j)*/
public static void FunctionB(this ClassA clsA)
{
clsA.A++;
}
}
}
调用示例:
复制代码 代码示例:
ClassA cls = new ClassA(10);
cls.FunctionB();
就是这些了,C#学习笔记之C#的扩展方法,希望对大家有所帮助。