我们在处理某些类别的资料时,可能会专门做一个处理资料的类别或方法来处理。
例如,以下是没有实作转型运算子的温度类别:
这些类别可能是别人定义好的,若我们需要某些新功能,例如摄氏转华视,在以前可能需要靠继承,或是实作一个转型用的类别才能达到。例如我定义了温度转型类别如下:
因为我设定成静态方法,在转型时就是如下方式使用:
而在C#3.0开始提供了扩充方法,让我们在其他类别中撰写的方法,能出现在目标类别的成员里面。意思是说透过扩充方法,C#3.0可以把我们刚刚撰写的温度转型类别的温度转型方法,伪装成摄氏或华氏类别自己的方法。
扩充方法的实作方式非常简单,只要将方法透过this关键字指定需要伪装的型别,就能成为该型别的扩充方法。当然还有两单点但书:
根据以上方式,我们可以快速的把我们刚刚在转型类别中撰写的转型方法,快速成为扩充方法。而this是写在方法第一个传入型别前,C#会帮我们把该方法伪装成第一个传入型别的方法,在执行时还是执行转型类别中的方法。所以我们只要做以下修改,就能转成为扩充方法:
使用这个方法时就能直接使用,C#会提示我们这是扩充方法,非常地方便。