c#扩展方法

c#扩展方法
-
扩展方法就是为一个类添加一个新的方法,但是并不是在一个类的内部去添加,如下代码,假如我们有一个类名为A
public class A { public void PrintA()//这个方法 并不是扩展方法,因为它就是在A的内部写的一个普通的方法 { Console.WriteLine("我是A中的方法"); } } -
而扩展方法是,我们在类B中写一个方法,但是这个方法是用来给A的实例化对象来使用的
public static class B { public static void PrintB(this A a)//第一个参数的写法,但是实际调用时候不用,这表示给A扩展一个新的方法 { Console.WriteLine("这是A的扩展方法"); } } A的对象就可以使用B中的这个方法 A a = new A();//实例化一个A的对象 a.PrintB();//调用扩展方法 -
所以扩展方法就是在不改变类A的基础上,去为其添加一个新的方法,但是也以下几点需要注意
- 在写法上
- 扩展方法必须写在一个静态类中,并且是一个静态的方法。
- 扩展方法的第一个参数的写法必须为:this+"要添加扩展方法的类名"+"要添加扩展方法的类的对象"
public static class B { public static void PrintB(this A a) { Console.WriteLine("这是A的扩展方法"); } } -
其他地方中:
- 扩展方法不能为静态类添加。
- 扩展方法可以重载,但是如果同名且参数一样,即添加了一个同名且参数相同的扩展方法,扩展方法并不会生效,类对象还会调用自己原先的那个方法。如:
public class A
{
public void PrintA()
{
Console.WriteLine("我是A中的方法");
}
}
public static class B
{
public static void PrintA(this A a)
{
Console.WriteLine("这是A的扩展方法");
}
}
A a = new A();
a.PrintA();输出结果为“我是A中的方法”

浙公网安备 33010602011771号