zoukankan      html  css  js  c++  java
  • c# 链式编程

    先写一段代码,让大家了解或重温一下什么是链式编程:
    EntityFramwork中的链式编程示例
    这一个基本的查询,执行了三个操作:1.查找FristName以C开头的员工;2.取员工的FirstName;3.将名字排序。
    EF中只需要一个语句,通过.将三者链成一个语句。后面还可以链接更多的语句,如果需要。
    下面代码作一些演化:
    链式编程示例2

    这段代码定义了Peoson类,有三个操作Run、Swim、Sing,操作完成后返回自身this(有返回值是链式编程的关键)。返回自身this好比说执行完操作先别走人,还(可能)有其它操作要去做,如Example2中:先造一个People,先命令ta跑步,跑完先别休息再唱歌,再游泳,游泳完OK了。
    链式编程是将多个操作(多行代码)通过点号"."链接在一起成为一句代码。(定义不严密,表达能力好的请给修正一下)
    以下为常规代码与链式代码的比较:
    对比
    为了增强效果,都执行了两轮操作。个人感觉链式代码更加精炼简洁易读。


    链式代码要求操作有返回值,但对于很多操作大都是void型,什么也不返回,这样就很难链起来了。当然也有解决办法,可能不太优雅。
    本人使用扩展方法解决这个问题,首先引入一个泛型扩展:
            /// <summary>
            
    /// 先执行操作,再返回自身
            
    /// </summary>

            public static T Do<T>(this T t, Action<T> action)
            
    {
                action(t);
                
    return t;
            }
    下面是调用示例,其中Student类操作都是void型的。
    链式编程示例4
    先创建一个学生,先跑再唱再唱,最后把自己名字改一个(哈哈,有点吃饱了撑着的感觉)。
    这种使用扩展实现链式编程的方法在我的另一篇文章中使用过,请参考:超精简C#程序代码改进-利用扩展方法简化代码增强可读性,这篇文章是一个探讨极限的文章,由于代码太过于抽象,没得到大家认可。今天写篇文章将 扩展方法 链式编程 单独列出来,欢迎大家讨论。

    链式编程的新思想在jQuery中已流行使用,请参见:
    jQuery入门[4]-链式代码
    jquery教程之链式操作(很容易的制作双色表格)

    本人系列文章《c#扩展方法奇思妙用》,敬请关注!

    -------------------

    思想火花,照亮世界

  • 相关阅读:
    Payload Header到底是什么
    usb bulk传输和同步传输
    Video streaming interface 带宽的选择
    Methyl-SeqDNA的甲基化图谱|DNase I-Seq|ChIP-Seq|3C-Seq|
    连词词组|relax|brings about a rise in|Chance are (high)that|Have no clue|Be passionate about|Tedious|overwhelmed by piles of
    body书写总框架
    单个body|简单解释|复杂解释|反面解释
    TS写法
    saturates|meteoric|enclose|marooned|predators|Pioneer community|salinization|condenser|embodied
    否定事实信息题
  • 原文地址:https://www.cnblogs.com/ldp615/p/1541189.html
Copyright © 2011-2022 走看看