• 《ASP.NET MVC企业实战》(三)MVC开发前奏


    在上一篇“《ASP.NET MVC企业级实战》(二)MVC开发前奏”中跟随作者大概了解了一些C#3.0和3.5中的新特性。本篇继续以这样的方式来学习C#中的一些特性。

     

    一、C#3.0/3.5新特性(续)

    a)Lambda表达式

    Lambda表达式的本质就是匿名函数,基于数学中的λ演算而得名,直接对应其中的labmda抽象,是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式树类型。Lambda表达式的运算符为=>,读作goes to,具有与“=”相同的优先级。

    Lambda表达式的基本形式为(inputparam)=> expression,例如(x,y)=>x==y;在只有一个参数时可以省略括号。lambda表达式的演化如下:

     

     

    在原始写法中可以使用var类型推断,但后面的写法必须指定签名类型了。

    b)标准查询运算符(SQO)

    标准查询运算符时定义在System.Linq.Enumerable类中的50多个为IEnumerable<T>准备的扩展方法,这些方法用来对集合进行筛选、投影、聚合、排序等操作。

    Where筛选集合,需要为where提供提供一个带bool返回值的筛选器,如图,匿名方法、委托、lambda表达式都可作为筛选器。

     

    Select查询投射,返回的是IEnumerable<TResult>类型的集合。

    Count数量统计。

    OrderBy排序,还有OrderByDescending,ThenBy等,OrderBy后还可以继续OrderBy,ThenBy不是必须的。

    延迟加载与即时加载,Where方法就是延迟加载的(Select也是),在通过ORM框架操作数据库时,使用Where方法只是在后续生成的SQL语句中增加了相应的条件,返回的是DbQuery对象,在这个对象上可以继续添加别的查询条件,最后在使用查询结果时(ToList、ToArray等)一次性查询数据库。

    如果使用FindAll代替Where,会即时加载。延迟加载实际上是将SQL的生成与执行分开进行,这样可以减少与数据库的交互,有助于提高性能。

     

    c)LINQ

    linq查询表达式是与SQL风格接近的代码,linq编译时会转换成标准查询运算符。以from开始,以select或group by子句结尾,输出的是一个IEnumerable<T>或IQueryable<T>集合。简单使用一下,要达到了解的程度还远远不够:

     

     

     

    二、 C#4.0新特性

    a)可选参数和命名参数

    可选参数接触较多,可以为某个参数指定默认的值,这样这个调用方法时这个参数就不是必须的了。

    而通过命名参数的传参方式,实参顺序可以与形参的不同。

     

    b)Dynamic特性

     

    这与ViewBag类似,都是动态类型。

     

    三、作者在最后还提了一下C#5.0的async、await特性,针对多线程和异步的,这些暂时不做了解了。

     

    学习资料:ASP.NET MVC  企业级实战 by 邹琼俊

     

     

    欢迎关注公众号【菜鸟程序员成长记】



     

  • 相关阅读:
    页面性能:如何系统地优化页面?
    为什么CSS动画比JavaScript高效?
    Code Review
    浏览器中的页面之CSS是如何影响到渲染流程的
    async / await
    手撸Promise
    Promise
    宏任务和微任务
    有点恶心,随手写点儿
    关于判断用户输入的是不是int类型,这次没有正则表达式
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7309699.html
Copyright © 2020-2023  润新知