• .NET新特性扩展方法


    最近新采用vs2008进行开发,其中大致了解了一下.net3.5中的新特性。

    今天就新特性之扩展方法,其功能类似于老版本当中的继承。

    扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。

    扩展方法的行为和静态方法非常的类似,你只能在静态类中声明它们。为声明一个扩展方法,你需要给该方法的第一个参数指定this关键字,而且你的第一个参数必定是你所扩展的类型实例。

    最常见的扩展方法是 LINQ 标准查询运算符,不过因为刚刚接触,所以在这里就不提具体的LINQ应用,用一个简单的实例来进行说明。

    首先,我们我们定义一个类型Door,编译为dll

    public class Door
    {
        private bool state;
        //定义门的开闭状态属性
        public bool DoorState
        {
            get { return state; }
            set { state = value; }
        }
        //开启门
        public void Open()
        {
            state = true;
        }
    }
    因为需要,我们需要考虑再为其类型增加一个关闭功能

    但类型已经封装,按照传统的方法我们可以声明一个扩展类ExDoor来添加我们需要的功能,但通过基类型实例是无法访问到我们扩展的方法的,只能通过扩展类型实例去访问。

    而在.net 3.5当中,这一切通过扩展方法就变得相当容易处理,而且无需改过其访问方式,直接通过原类型实例即可访问扩展方法。

    下面我们来为Door定义一个扩展

    static class DoorExpand
    {
        //关闭门
        public static void Close(this Door door)
        {
            door.DoorState = false;
        }
    }

    最后我们测试一下

    Door door = new Door();
    door.Open();
    Response.Write(door.DoorState.ToString());

    Response.Write("<br \>");
    door.Close();
    Response.Write(door.DoorState.ToString());

    输出结果为:True

                     False

    很明显我们的扩展已经起作用,然而我们的访问不需要做任何的改变。这一点来说还是比较好用哈

  • 相关阅读:
    中文词频统计
    【大数据应用期末总评】Hadoop综合大作业
    【大数据作业十一】分布式并行计算MapReduce
    【大数据作业十】分布式文件系统HDFS 练习
    【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop
    【爬虫综合大作业】腾讯视频——大家到底都在看什么?!
    【大数据作业七】爬取全部的校园新闻
    【大数据作业六】获取一篇新闻的全部信息
    【大数据作业五】理解爬虫原理
    【大数据作业四】中文词频统计
  • 原文地址:https://www.cnblogs.com/symbol441/p/1254316.html
Copyright © 2020-2023  润新知