zoukankan      html  css  js  c++  java
  • 《CLR.via.C#第三版》第二部分第8,9章节读书笔记(四)

    三种类型的构造方法:

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

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

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

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

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

    扩展方法:

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

    参数:

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

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

  • 相关阅读:
    一条Sql的Spark之旅
    Redis学习笔记:Redis在C#中的使用
    MySQL_表操作
    git上传新项目到coding
    Jenkins 安装 on centos7
    day 36
    表单生成器(Form Builder)之表单数据存储结构mongodb篇
    ORA-16032和ORA-07286 LOG_ARCHIVE_DEST_1没生效
    SQL查询小案例
    mysql从5.6升级到5.7后出现 Expression #1 of ORDER BY clause is not in SELECT list,this is incompatible with DISTINCT
  • 原文地址:https://www.cnblogs.com/hangwei/p/4087846.html
Copyright © 2011-2022 走看看