Cp6类型和成员基础

成员

常量;字段(静态字段和实例字段);实例构造器;类型构造器(用于静态字段的构造);方法(静态方法和实例方法);操作符重载(本质是一个方法);转换操作符;属性(本质还是方法);事件(委托);类型(嵌套类);

类型的可见性

public,private,protected,internal,sealed,默认的类是internal。

友元程序集

这部分看看就行了

成员的可访问性

private protected(对应clr是Family),internal(对应clr是assembly),public,protected internal;默认是private;

静态类

静态类一般用作工具类,组合一组相关的成员在一起。
限制:

  • 只能派生自Object
  • 不能实现任何接口
  • 只能定义静态成员
  • 不能作为字段,方法参数或者局部变量使用

分部类,分部结构和分部接口

partial关键词,作用就是多个文件好管理,代码拆分。

组件,多态和版本控制

了解组件的含义
主版本,次版本,内部版本,修订号;前两个代表连续,稳定的程序集,后两个代表对这个功能集的一次维护。
CLR是连续带看版本号的,不同的版本号视为不同的程序集。
区分abstract,virtual,override,sealed,new的含义,其实很好理解的;

CLR如何调用虚方法,属性和事件

这块很有意思,直接看书上,结合IL来讲解,比较清楚。call,callvirt指令。只是书上描述的不是很清楚, 暂时没看原版,不知道是不是翻译问题。 网上看了一个人的介绍,call=调用由传递的方法说明符指示的方法,callvirt=对对象调用后期的绑定方法。感觉是可以这么理解。
设计类的时候,尽量减少虚方法的定义,因为性能原因,还有基类丧失对虚成员的控制。

合理使用类型的可见性和成员的可访问性

这里作者认为默认的非sealed类不好,从提高编译后代码性能,安全性和版本控制的角度来考虑的,有道理,但是实际开发中还是习惯不sealed,哈哈。
作者不喜欢嵌套类,我也不喜欢。

对类型进行版本控制的时候的虚方法的处理

这里主要解释了new和override的用法,当然尽量让方法名称不一样吧。

[Clr via C#读书笔记]Cp6类型和成员基础的更多相关文章

  1. [Clr via C#读书笔记]Cp4类型基础

    Cp4类型基础 Object类型 Object是所有类型的基类,有Equals,GetHashCode,ToString,GetType四个公共方法,其中GetHashCode,ToString可以o ...

  2. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

    编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1 ...

  3. [CLR via C#]6. 类型和成员基础

    原文:[CLR via C#]6. 类型和成员基础 6.1 类型的各种成员 在一个类型中,可以定义0个或多个以下种类的成员: 1)常量    常量就是指出数据值恒定不变的符号.这些符号通常用于使代码更 ...

  4. 《Programming Hive》读书笔记(两)Hive基础知识

    <Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...

  5. 《CLR via C#》读书笔记(6)类型和成员基础

    6.1 类型的各种成员 在一个类型中,可以定义0个或者多个以下种类的成员: 常量 常量是在编译时设置其值并且永远不能更改其值的字段.使用常量可以为特殊值提供有意义的名称以代替数字文本,以使代码变得更容 ...

  6. Clr Via C#读书笔记---程序集的加载和反射

    #1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef ...

  7. CLR via C#读书笔记一:CLR的执行模型

    CLR(Common Language Runtime)公共语言进行时是一个可由多种编程语言使用的“进行时”. 将源代码编译成托管模块 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语 ...

  8. <NET CLR via c# 第4版>笔记 第6章 类型和成员基础

    6.1 类型的各种成员 6.2 类型的可见性 public 全部可见 internal 程序集内可见(如忽略,默认为internal) 可通过设定友元程序集,允许其它程序集访问该程序集中的所有inte ...

  9. CLR via C# 读书笔记-21.托管堆和垃圾回收

    前言 近段时间工作需要用到了这块知识,遂加急补了一下基础,CLR中这一章节反复看了好多遍,得知一二,便记录下来,给自己做一个学习记录,也希望不对地方能够得到补充指点. 1,.托管代码和非托管代码的区别 ...

随机推荐

  1. unittest单元测试框架之测试套件(三)

    1.测试套件(注意:测试用例先添加先执行,后添加后执行,由此组织与设定测试用例的执行顺序) addTests:添加多个测试用例 addTest:添加单个测试用例 import unittest fro ...

  2. sql中table用法

    for c in (select column_value from table(f_split(V_FileID, ','))) loop --若没有填写资格开始结束时间,则填入 select co ...

  3. python drf+xadmin+react+dva+react-native+sentry+nginx 搭建前后端分离的博客完整平台

    前言: 经过差不多半年的开发,搭建从前端到服务器,实现了前后端分离的一个集PC端.移动端的多端应用,实属不易,今天得空,好好写篇文章,记录这些天的成果.同时也做个分享. 演示网站地址: http:// ...

  4. IDEA一直提示 错误: 找不到或无法加载主类

    1.把http://repo1.maven.org/maven2...下载下来2.放到本地Manen仓库archetype 文件夹下3.设置IDEA Maven->Runner 界面的VM Op ...

  5. Git-2.15.1.2-64-bit安装

    方法/步骤    我们在百度搜索git,然后在git的官网上找到git的下载页面,如下图所示.在首页在Downloads处选择下载Windows版本,当然您可以根据需求下载其他版本的安装文件.     ...

  6. day 18 类与类之间的关系

    类与类之间的关系     在我们的世界中事物和事物之间总会有一些联系.    在面向对象中,类和类之间也可以产生相关的关系 1.依赖关系     执行某个动作的时候. 需要xxx来帮助你完成这个操作, ...

  7. Hadoop mapreduce框架简介

    传统hadoop MapReduce架构(老架构)   从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:   1.首先用户程序 (JobClient) 提交了一个 job,job ...

  8. Java线程状态图

    嘤,先盗图一张,后面再补充描述!

  9. django_orm 基本操作

    单表操作 增的操作: 一种方式:表名.objects.create(name='xxoo') 第二种方式:表名(name='xxoo') obj=表名(name='xxoo') obj.save() ...

  10. Hibernate学习笔记一

    1 框架体系结构 2 hibernate入门 2.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational: ...