可爱的扩展方法

“扩展方法”,顾名思义,即可以向现有类型当中“添加”一个或者多个方法。比如我们拿到了一个封装好的程序集,我们要对其进行引用,而在使用的时候突然发现,其中的某些类的方法不足以供应我们的所需,这时我们就可以利用扩展方法对这个类型进行进一步加工。

首先扩展方法是静态的,假如你引用了涵盖扩展方法的命名空间,那么在使用它以前到整个程序的生命周期结束,它将一直驻留在程序域的内存当中。

其次要注意的是,扩展方法是针对类型的。也就是要注意类型之间的阶梯关系,向高级的类型添加扩展方法,应该慎重处理,比如object。

扩展方法在参数当中使用this关键词指派类型,架设参数为arg0,arg1,arg2,那么arg1,arg2则为该扩展方法的实际参数。

   public static class TestExtensions
   {
       public static int GetStringLength(this string str)
       {
            return str.Length;
       }
   }

上述代码声明了一个扩展方法,获取字符串的长度。在这个方法中 this 指定了string类型。即向string类型的实例当中添加了一个GetStringLength的无参方法。使用的时候只要引用到该静态方法所在的命名空间,VS就会只能感知到。

注意的是,凡是扩展方法,在方法图标上都会出现一个向下的箭头,用以区分非扩展方法。