扩展方法是静态方法,它是类的一部分,但实际上没有放在类的源代码中。
设计一个Money类
1 public class Money 2 { 3 private decimal amount; 4 public decimal Amount 5 { 6 get; 7 set; 8 } 9 public override string ToString() 10 { 11 return "$" + Amount.ToString(); 12 } 13 }
假设向Money类中添加一个方法AddToAmount,但是程序的源代码不能直接修改,此时就需要创建一个静态类,将方法AddToAmount()添加为一个静态方法,对应代码如下:
public static class MoneyExtension { public static void AddToAmount(this Money money, decimal amountToAdd) { money.Amount += amountToAdd; } }
对于扩展方法,第一个参数是要扩展的类型,它放在this关键字的后面,这就告诉编译器,这个方法是Money类的一部分。
在执行新方法的时候,不需要第一个参数,如下:
1 Cash1.AddToAmount(10M);
即使扩展方法是静态的,也要使用标准的实例方法语法。