我们知道,一但一个类型(例如:类、接口、结构、枚举或者委托)被定义然后编译进一个.net程序集后,它的定义工作就应该说是结束了。
为该类型添加成员。更新成员或者删除成员,唯一的方法就是修改类型的定义代码。然后重新编译更新程序集。
(更高级的方法,例如使用命名空间system.Reflection.Emit下的类对已编译的类型做运行时动态构造)
在C#3.0中,可以把方法定义成为扩展方法
扩展方法允许现存已编译的方法类型(例如:类、接口、结构、枚举或者委托)和当前即将编译的类型在不需要被直接更接更新的情况下获得功能上的扩展。
扩展方法。
必须氢方法定义在静态类中(因此第一个扩展方法也必须是静态的)
护展方法都需要使用关键字this对第一个调用的参数(并仅对第一个参数)
第一个扩展方法只可以被内存中正解的实例调用。或都通过所处一静态类被调用
代码
//必须为static类
static class Program
{
static void Main(string[] args)
{
Console.WriteLine(" fun with Extension Methods ");
int myInt = 123;
Console.WriteLine(myInt.reverseDigits());
}
//本方法任何 [整数] 返回倒置,
public static int reverseDigits(this int i)
{
//把int转成字符串,再转成单了字符数组
char[] di = i.ToString().ToCharArray();
Array.Reverse(di);
string newdigits = new string(di);
return int.Parse(newdigits);
}
}
//必须为static类
static class Program
{
static void Main(string[] args)
{
Console.WriteLine(" fun with Extension Methods ");
int myInt = 123;
Console.WriteLine(myInt.reverseDigits());
}
//本方法任何 [整数] 返回倒置,
public static int reverseDigits(this int i)
{
//把int转成字符串,再转成单了字符数组
char[] di = i.ToString().ToCharArray();
Array.Reverse(di);
string newdigits = new string(di);
return int.Parse(newdigits);
}
}