zoukankan      html  css  js  c++  java
  • LINQ学习系列-----1.3 扩展方法

         这篇内容继续接着昨天的Lambda表达式的源码继续下去。昨天讲了Lambda表达式,此篇讲扩展方法,这两点都是Linq带来的新特性。

       一.扩展方法介绍        

                废话不多说,先上源码截图:

                         

           上图中GetMemoryCount就是一个扩展方法,从上图的标注可以得出以下几点信息:

                       1.扩展方法需要加this关键词

                       2.扩展方法和被包含的类必须是静态的

                       3.被包含的类不能是泛型类

            深入总结:

                      1.扩展方法可以接收任意多个参数,不过第一个参数必须用this修饰。

                      2.扩展方法的基础是对象, 比如这个对象突然想额外加一个方法,那可以用扩展方法,第一个参数就是以这个对象为基础的参数。(扩展方法的基石是对象)

     二.扩展方法的智能感知   

            当你扩展方法代码编写完成,并且没有问题的时候。你调用此对象的扩展方法时,IDE会有智能感知,见下图箭头处:

                       

               在上图中,也可以看到扩展方法的图标也不一样,是带有蓝色下坠标示。

    .扩展方法的链式语句

                

               在上图可以看到,扩展方法带来的好处是可以进行语句的链式操作。

    .扩展方法和正常方法的冲突

              先上源码:

                    

          从上图可以看到,在对象中没有找到对应的方法,就会去执行扩展方法(object是所有的基类)。执行结果:

                 

        

        源代码:    LINQ学习系列-----1.3扩展方法(源码.rar

  • 相关阅读:
    【缓存】缓存穿透、缓存并发、热点缓存解决方案
    【缓存】redis缓存设计
    【AOP】Spring AOP 和 AspectJ
    disruptor
    Spring Boot application starters
    【日志】log4j2 yml
    PHP中间件--ICE
    docker 简单入门(一)
    redis、memcache和mongodb各自的优缺点是什么
    MYSQL三大范式
  • 原文地址:https://www.cnblogs.com/xiaowangzi1987/p/7909542.html
Copyright © 2011-2022 走看看