C#4.0图解教程(第三章)
类型由下面的元素定义:
1.名称
2.用于保存数据成员的数据结构
3.一些行为的约束
short类型
名称:short
结构:2Bytes
行为:16位整数
名称:int
结构:4Bytes
行为:32位整数
3.3实例化类型
通过实例化类型而创建的对象被称为类型的对象或类型的实例。这两个术语可以互换
3.4数据成员和函数成员
像short、int 和龙称为简单类型。只能存储一个数据。
存储多个数据如数组(array)
成员类别
有两种成员
数据成员 保存了与找个类的对象或作为一个整体的类相关的数据
函数成员 执行代码。函数成员定义类型的行为
3.5 预定义类型
11种数值类型
不同长度的有符号和无符号整数类型
浮点数类float和double
一种称为decimal的高精度小数类型。与floating和double不同。decimal类型可以准确地表示分数。decimal类型常用于货币的计算
一种Unicode字符类型char
一种布尔类型bool。bool类型表示布尔值并且必须为true或false中的一个
3种非简单类型
string ,它是一个Unicode字符数组
object 它是所有其他类型的基类
dynamic 使用动态语言编写的程序集时使用
预定义补充
所有定义的类型都直接映射到底层的.net类型
在C#中尽量使用C#类型别名而不是.net类型别名
3.6用户定义类型
类类型(class)
结构类型(struct)
数组类型(array)
枚举类型(enum)
委托类型(delegate)
接口类型(interface)
类型通过类型声明创建,类型声明包含一下信息
要创建的类型的种类
新类型的名称
对类型中每个成员的声明(名称和规格)。array和delegate类型除外。它们不含有命令成员。
用户必须先声明一个类型,然后实例化该类型的对象
3.7栈zhan和堆dui
运行程序使用两个内存区域来存储数据:栈和堆
3.7.1
栈是一个内存数组,是一个LIFO(后进先出)的数据结构。栈存储几种类型的数据
某些类型的变量值
程序当前执行的环境
传递给方法的参数
栈的特征
数据项被压入栈顶并从栈顶弹出
数据只能从栈的顶端插入和删除
把数据放到栈顶称为入栈push
从栈顶删除数据称为出栈pop
3.7.2堆
堆里的内存能够以任意顺序存入和移除
虽然程序可以在堆里保存数据,但并不能显式地删除它们CLR自动在判断出不被使用时,自动删除无主堆的对象。
3.8值类型和引用类型
类型被分为两种:值类型和引用类型
值类型只需要一段单独的内存。用于存储实际的数据
引用类型需要两段内存
第一段存储实际的数据,它总是位于堆中
第二段是一个引用,指向数据在堆中存放的位置
对于值类型,数据存放在堆里。对于引用类型,实际数据存放在堆里而引用存放在堆里。
3.8.1存储引用类型和对象的成员
引用类型对象的数据部分始终存放在堆里
值类型对象,或引用类型数据的引用部分可以存放在堆里。也可以存放在栈里,这依然实际环境。
对于引用类型的任何对象,它所有的数据成员都存放在堆里,无论它们是值类型还是引用类型