当前位置: 首页 > 编程语言 > C# > 正文

C#3.0新体验(二)

时间:2010-12-16 csdn博客 xl 刘

前言:

学习除了要坚持不懈,还需要有好的方法!总结整理自己学习 的资料能使得所学的内容条理清晰,查找回顾也很方便!俗话说的好:“ 好记性不如烂笔头”;以前很多知识都是看过后,过一段时间就忘记,时 间花下去了,但效果甚微;看的多,但杂而不精;这些都是没有做笔记,没有深 入学习而导致的时间与精力的浪费,因此每个研究课题,都要好好整理资料,做 一个系列的研究!

三.扩展方法 (续接上一编)

扩展方法定义如 下:

public static class Extensions{
    public static void Foo(this string s) {
        …
     }
}
使用:
    String s=“Hello,World”;
    s.Foo();

我们以 前会对一些参数、对象进行某些处理,而写一些独立方法来封装这些处理语句; 这些方法为了方便重用,可能会写在一些公共类里供大家调用,例如:

定义一个公共方法计算每天有多少分钟,
public class PublicCenter
{
    //传入参数为天数
    public long GetDaysMin(int pDays)
    {
        return pDays * 24 * 60;
    }
}
外部使用调用:
int days = 3;
PublicCenter pCenter = new PublicCenter();
int minutes = pCenter.GetDaysMin(days);

我想大家对上面这段代 码的使用都非常熟悉,以前这样处理的情况非常的多!现在我们看看用扩展方法 来处理会是怎么样;

定义一个静态类的静态方法计算每天有多少 分钟(注意必须是静态)
public staticclass PublicCenter
{
    //传入参数为天数(注意this关键字必不可少)
     public staticlong GetDaysMin( this int pDays)
    {
         return pDays * 24 * 60;
    }
}
外部使 用调用:(注意静态类必须同在一个命名空间,或添加引用,这个大家应该也知 道的(啰嗦))
int days = 3;
//当我们在所以int类型的变量后按 下".",就会智能提示出这些自己写的扩展方法GetDaysMin()。
int minutes = days.GetDaysMin()

大家可以看出扩展方法的 本质为将实例方法调用在编译期改变为静态类中的静态方法调用。

MSDN 中对扩展方法的定义是:扩展方法使您能够向现有类型“添加”方法 ,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。