三种类型的构造方法:

实例构造器(引用类型):实例构造器永远不能被继承(所以方法前没有修饰符);如果类的修饰符为static(sealed和abstract),编译器根本不会在类的定义中生成一个默认构造器。

重要认知:为了使代码“可验证”,类的实例构造器在访问从基类继承的任何字段之前,必须先调用基类的构造器。如果派生类的构造器没有显示调用一个基类构造器,C#编译器会自动生成对默认的基类构造器的调用。

在类中声明的字段,实际在编译器中是转换成构造器中的代码执行初始化。如果一个类中有3个字段,3个构造函数,那么编译器实际生成三次初始化3个字段的代码--每个构造器一次。

实例构造器(值类型):C#编译器不允许值类型定义无参构造器(有参的可以)。

类型构造器(静态构造函数):只能定义一个,没有参数,可以和普通构造函数共存,作用是设置类型实例的初始状态。它的调用由CLR负责。它只执行一次(多线程时)。

扩展方法:

C#扩展方法:允许定义一个静态方法,并用实例方法的语法来调用它。(只需在方法的第一个参数前加this关键字)

参数:

声明方法的参数类型时,应尽量指定最弱的类型,最好是接口而不是基类。(讲解了ref、out、params)

感悟:这本书讲解C#这门编程语言,都是从编译器,CLR的执行原理角度,非常深刻。这两章个人感觉没什么特别重要的内容,所以列出一些重要概念,熟知这些概念即可。

《CLR.via.C#第三版》第二部分第8,9章节读书笔记(四)的更多相关文章

  1. 精通正则表达式(第三版)——Mastering Regular Expressions,3rd Edition——读书笔记1

    基础知识介绍: 子表达式匹配 环视 引号内的字符串:"(^")*" 12小时制:(1[0123]|[1-9]):[0-5][0-9]*(am|pm) 24小时制:(([0 ...

  2. Java 线程第三版 第八章 Thread与Collection Class 读书笔记

        JDK1.2引入最有争议性的改变是将集合类默觉得不是Thread安全性的. 一.Collection Class的概述 1. 具有Threadsafe 的Collection Class: j ...

  3. 精通正则表达式(第三版)—Mastering Regular Expressions,3rd Edition—读书笔记2

    1.肯定断言:必须匹配一个字符 排除型字符组:匹配未列出字符的字符组 2.范围表示法——列出范围内所有的字符 大多数情况下,不会影响执行速度.但是,某些实现方式不能完全优化字符组.所以,最好是有范围表 ...

  4. 《CLR.via.C#第三版》第一部分读书笔记(一)

    最近开始仔细研读<CLR.via.C#第三版>这本书.读pdf文档确实很累.建议有条件的朋友还是买书看吧. 我的笔记用来记录我对这本书的理解,简化下逻辑,对每个部分我觉得是要点的进行归纳总 ...

  5. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

  6. 《CLR.via.C#第三版》第二部分第4,5章节读书笔记(二)

    这两章全是理论性的东西,我觉得不必过于钻牛角尖.理论这东西,只有在长期的实践中去慢慢领悟才会深刻.下面我只写些我认为重要的关键知识. (一)类型转换 知识点:向基类型的转换被认为是一种安全的隐式转换: ...

  7. 《CLR.via.C#第三版》第二部分第12章节 泛型 读书笔记(六)

    终于讲到泛型了.当初看到这个书名,最想看的就是作者对泛型,委托,反射这些概念的理解.很多人对泛型的理解停留在泛型集合上,刚开始我也是,随着项目越做越多,对待泛型的认识也越来越深刻. 泛型的概念:泛型是 ...

  8. 《CLR.via.C#第三版》第二部分第6,7章节读书笔记(三)

    第6章讲的是类型和成员基础 重要认知:虚方法 虚方法的设计原则:设计一个类型时,应尽量减少所定义的虚方法的数量. 首先,调用虚方法的速度比调用非虚方法慢. 其次,JIT编译器不能内嵌虚方法,这进一步影 ...

  9. 《CLR.via.C#第三版》第二部分第13章节 接口 读书笔记(七)

    这章的书写感觉很普通,是些基础的认知知识. 其中一点的重要认知,泛型接口的好处(其实也是使用泛型的好处之一):编译时类型安全&处理值类型时减少装箱. 再说点书上没有的.本来这些知识我打算另外分 ...

随机推荐

  1. Visual C++ 的代码折叠

    写着写着,文件长了,代码多了. 就需要折叠一下了. 以前不知道C++有,百度了一下才知道,跟C#的还挺像 ,就是多了个 #pragma #pragma region 注释说明 代码. #pragma ...

  2. LD算法获取字符串相似度

    一个如何识别相似语句的问题,于是上网找了找,一个叫Levenshtein Distance的算法比较简单,就写了段代码实现了一下,效果还不错. 这个算法是一个俄国人Lvenshtein提出的,用于计算 ...

  3. 更改conda安装源镜像

    为了更好安装包需要制定conda安装包所使用的镜像为中国的镜像,目前为止只有一家提供了镜像 执行conda命令: conda config 会创建conda的配置文件,使用search everyth ...

  4. Android 谈谈封装那些事 --BaseActivity 和 BaseFragment(二)

      1.前言 昨天谈了BaseActivity的封装,Android谈谈封装那些事--BaseActivity和BaseFragment(一)有很多小伙伴提了很多建议,比如: 通用标题栏可以自定义Vi ...

  5. 移动web端的react.js组件化方案

     背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...

  6. 16-01-25---Servlet复习笔记(01)

    Servlet ServletAPI中有4个java包    javax.servlet 包含Servlet与Servlet容器之间契约的类和接口    javax.servlet.http 包含HT ...

  7. Exchange管理界面

    Exchange有三种管理方式,一个是通过Powershell命令行操作进行管理.Exchange自带的Powershell是在其基础上建的,加入了Exchange管理操作的函数,能够进行另外两种方式 ...

  8. haahah

    #DB ``` import os basedir = os.path.abspath(os.path.dirname(__file__))   SQLALCHEMY_DATABASE_URI = ' ...

  9. 【Redis】:Jedis 使用

    Redis 支持很多语言, 例如C#,RUBY,JAVA 等, Jedis是redis的java版本的客户端实现 一个简单的Jedis使用 依赖第三方包jedis-2.7.2.jar commons- ...

  10. 使用 Graphviz 画拓扑图

    使用 Graphviz 画拓扑图 0)前述 本文着重讲一下 Graphviz 的风格控制,基础一些的就不在这里讲啦. graphviz 的主页是http://www.graphviz.org/. Gr ...