zoukankan      html  css  js  c++  java
  • .net framework 3.5的分部方法

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
       出自http://www.cnblogs.com/wzcheng/archive/2007/07/31/837199.html

    早上看.net framework 3.5的分部方法这个特性。例子如下,第一个类为定义类,第二、第三个类为实现类。

    .net framework 3.5的分部方法 - netcorner - netcorner的博客    public partial class AI
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客    .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客         public void Active()
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客        .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客             this.Run();
    .net framework 3.5的分部方法 - netcorner - netcorner的博客             this.Jump();
    .net framework 3.5的分部方法 - netcorner - netcorner的博客           }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          partial void Run();
    .net framework 3.5的分部方法 - netcorner - netcorner的博客
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          partial void Jump();
    .net framework 3.5的分部方法 - netcorner - netcorner的博客       }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客
    .net framework 3.5的分部方法 - netcorner - netcorner的博客     public partial class AI
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客    .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          partial void Run()
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客        .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客              Console.WriteLine("我在跑");
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客      }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客
    .net framework 3.5的分部方法 - netcorner - netcorner的博客     public partial class AI
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客    .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          partial void Jump()
    .net framework 3.5的分部方法 - netcorner - netcorner的博客 .net framework 3.5的分部方法 - netcorner - netcorner的博客        .net framework 3.5的分部方法 - netcorner - netcorner的博客{
    .net framework 3.5的分部方法 - netcorner - netcorner的博客              Console.WriteLine("我在跳");
    .net framework 3.5的分部方法 - netcorner - netcorner的博客          }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客      }
    .net framework 3.5的分部方法 - netcorner - netcorner的博客
      

    它可以:

    1. 以上三个类可以不放在相同的CS文件里

    2. 后两个分部类如果不写,编译能顺利通过,在IL里产生有方法体的Run和Jump,但是空实现。

    它不可以:

    1. 分部方法不能是公开类型,必须是私有。

    2. 实现类不能和定义类分别存在不同的程序集里。

    它有价值的地方:

    1. 更细化分工过程。以前系统分析到对象级,现在可以细到方法级别。从例子里看,对象框架维护人定义了Active方法,而Run和Jump可能被分派到其他人实现。

    这样的分工模式和更大规模的集成开发趋势是紧密关联的。简单的看,这只是一个新的语言特性;仔细思考,这其实是软件朝工业化方向发展的一个信号。以后的软件开发过程势必是基于更多特性(或者说是开发工艺),在生产线上完成的。一个人就是一个螺丝钉,让你实现Run就Run,让你Jump就Jump,如果你想发挥自己的聪明才智,好,就在这个范围内尽情的发挥吧!

    2. 代码可以写的更优雅,如果本例中的Run和Jump的内部实现异常复杂(AI机器人行为嘛),一个CS文件搞个几千上万行,别人读的时候时会吐血的。如果再碰到一个写代码不地道的,把方法堆砌起来了事,那是连肝都要吐出来的。有了分部方法,就可以把问题压到局部,不想看的地方我就可以看不见。

    3. 代码优雅只是一个表象,如果是牺牲了性能换取的,我宁愿不要这个特性。事实上恰恰相反,分部方法的效率是非常OK的。具体就去写个例子,观察IL吧。哈哈!

  • 相关阅读:
    二维数组最大子数组算法
    寻找最大子数组
    最大值bug 调试
    多路电梯调度算法
    分析一个文本文件各个词出现的频率,并把频率最高的十个词打印出来。
    使用redis实现生产者消费者模式
    简单使用redis实现sso单点登录
    MongoDB批量导入及简单的性能优化
    mysql安装
    字符串操作性能优化
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912324.html
Copyright © 2011-2022 走看看