第四节 详解类型、变量与对象(上,下)
视频链接:刘铁猛老师的《C#语言入门详解》
https://www.youtube.com/watch?v=EgIbwCnQ680&list=PLZX6sKChTg8GQxnABqxYGX2zLs4Hfa4Ca
什么是类型(Type)?
- 又名数据类型(Data Type)
- 是数据在内存中存储的“型号”
- 小内存容纳大尺寸数据会丢失精确度、发生错误
- 大内存容纳小内存数据会导致浪费
- 编程语言的数据类型与数学的数据类型不完全相同
- 强类型语言与弱类型语言的比较(dynamic 模仿JavaScript的弱类型)
dynamic myVar=100;
Console.WriteLine(myVar); // 100
myVar="Hello,Ok!";
Console.WriteLine(myVar); // Hello,Ok!
类型在C#语言中的作用
- 一个C#类型中所包含的信息有:
- 存储此类型变量所需的内存空间大小
- 此类型的值可表示的最大、最小值范围
- 此类型所包含的成员(如方法、属性、事件等) PropertyInfo MethodInfo
- 此类型由何基类派生而来 Type myType=typeof(Form); myType.BaseType.Name
- 程序运行的时候,此类型的变量在分配在内存的什么位置
- Stack简介 方法调用,很小,可能会爆掉——>栈溢出
- Stack overflow
- Heap简介 存储对象,很大,不回收内存可能浪费——>内存泄漏
- 使用Performance Monitor查看进程的堆内存使用量
- 关于内存泄漏
- 此类型所允许的操作(运算)
常见数据类型


C#语言的类型系统
- C#语言的五大类型
- 类(Classes):如Windows,Form,Console,String
- 结构体(Structures):如Int32,Int64,Single,Double
- 枚举(Enumerations):如HorizontalAlignment,Visiblity
- 接口(Interface)
- 委托(Delegates)
- C#类型的派生谱系

变量、对象与内存
- 什么是变量
- 表面上来看,变量的用途是存储数据
- 实际上,变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能存入变量
- 变量一共有7种(静态变量,实例变量--成员变量和字段,数组元素,值参数,引用参数,输出形参,局部变量)
- 变量的声明
- 有效的修饰符组合 类型 变量名 初始化器
- 值类型的变量
- 以byte/sbyte/short/ushort
- 值类型没有实例,所谓的“实例”与变量合而为一

- 引用类型的变量与实例
- 引用类型变量与实例的关系:引用类型变量里存储的数据是对象的内存地址
- 局部变量是在Stack上分配内存,实例是在Heap上
- 变量的默认值
- 常量(const,值不可改变的变量)
- 装箱与拆箱(Boxing & Unboxing)
int x=100;
Object obj=x; // 装箱(首先在Heap上创建值为x的内存区域,然后obj存储的值是该堆区域的地址)
int y=(int)obj; // 拆箱(先发现obj的存储的值为堆地址,然后把该堆地址上的存储值赋值给y)
// 由于装箱和拆箱经过了堆的相应转换,所以性能上有损耗

浙公网安备 33010602011771号