第四章 类型基础

1. 概述

  本章讲述使用 类型 和 CLR 时需要掌握的一些基础知识。

2. 名词解释

3. 主要内容

  3.1 所有类型都从System.Object 派生

    所有对象都用new操作符来创建,步骤如下:

    ① 计算类型及其所有基类型中定义的实例字段需要的字节数。包括两个额外成员:类型对象指针 和 同步块索引。

    ② 从托管堆中分配指定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零(0)。

    ③ 初始化对象的 类型对象指针 和 同步块索引。

    ④ 调用类型的实例构造器,向其传入在对new的调用中指定的任何实参。

  3.2 类型转换

    CLR具有类型安全性。

    使用C#的 is 和 as 操作符来转型。

      is 检查一个对象是否兼容于指定的类型。永不会抛出异常。

      as 类似强制转换。永不会抛出异常。转换失败会返回null。

  3.3 命名空间和程序集

    两者不一定是相关的。同一个命名空间中的各个类型可能在不同的程序集中实现。反之,同一个程序集中,也可能包含不同命名空间的类型。

  3.4 运行时的相互联系

    线程栈和托管堆的分配情况。

4. 总结

  概述了类型的基础和堆栈分配情况。

时间: 2025-01-06 04:08:29

第四章 类型基础的相关文章

第四章类型基础

以下是new操作符所做的事: 1.计算机及其所有基类型中定义的所有实例字段需要的字节数.堆上每个对象都需要一些额外的成功,包括"类型对象指针(Type object Pionter)"和”同步块索引(sync block Index)“ 2.从托管堆中分配类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零(0) 3.初始化对象的"类型对象指针"和"同步块索引"成员 4.调用类型的实例构造器,传递在new调用中指定的实参; 实例成员属于类

《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

第四章 Numpy基础:数组和矢量计算 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy和面向数组的计算能有助于理解后面的pandas.按照课本的说法,作者关心的功能主要集中于: 用于数据整理和清理.子集构造和过滤.转换等快速的矢量化运算 常用的数组解法,如排序.唯一化.集合运算等 高效的描述统计和数据聚合/摘要运算 用于异构数据集的合并/连接运算的数据对齐和关系型数据运算 将条件逻辑表述为数组表达式(而不是带有if-elif-else分支

NET CLR via C#(第4版)第4章 类型基础

本章内容: 1 所有类型都从System.Object派生 2 类型转换 3 命名空间和程序集 4 运行时的相互关系 本章讲述使用类型和CLR时需掌握的基础知识.具体地说,要讨论所有类型都具有的一组基本行为. 讨论类型安全性.命名空间.程序集.以及如何将对象从一种类型转换成另一种类型. 本章最后会解释类型.对象.线程栈和托管堆在运行时的相互关系. 4.1 所有类型都从System.Object派生 CLR要求每个类型最终都从System.Object类型派生.从而确保类每个对象都具备一组最基本的

C++笔记第四章--类型和声明

布尔量 Eg: bool b1=a==b;//这个例子中,=是赋值,==是判断是否相等,所以先是判断是否相等,a如果等于b,b1的值就是true,否则就是false了 Bool经常被用作检查某些条件是否成立的函数的结果类型, Eg:bool greater(int a,int b) {return a>b} Bool可以和整数进行隐式的转换(任何非零的整数都是true,零为false) eg:bool a=ture; bool b=true; bool x=a+b;//因为a+b=2 为true

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

《JAVA编程思想》学习笔记——第十四章 类型信息

运行时类型信息使得你可以在程序运行时发现和使用类型信息. 主要有两种方式:一种是"传统的"RTTI, 它假定我们在编译时已经知道了所有的类型;另一种是"反射"机制,它允许我们在运行时发现和使用类的信息. Class对象 类是程序的一部分,每个类都有一个Class对象.换言之,每当编写并且编译一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中).为了生成这个类的对象,运行这个程序的Java虚拟机(JVM)将使用被称为"类

第4章 类型基础 -- 4.1 所有类型都从System.Object派生

4.1 所有类型都从System.Object派生 “运行时”要求每个类型最终都从System.Object类型派生. 由于所有类型最终都从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法. System.Object类提供了如下表所示的公共实例方法: 表4-1 System.Object的公共方法 Equals 若两个对象具有相同的值,就返回 true .详情请参考"对象相等性和同一性" GetHashCode 返回对象的值的哈希码.如果某个类型的对象要

The C++ Programming Language 学习笔记 第四章 类型和声明

1.关于main 函数中的 return 0 C99标准中,main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统).如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出.尽管如此有人会为了移植性在main函数后面加上return 0,这是为了照顾老版本的编译器,如vc6.0等,不过现在过了这么多年了,应该没有人会用这么老的编译器了吧(也许不一定),所以