类型、变量与对象
引用类型的变量与实例
Student stu;
计算机看到引用类型,直接给它分配 4 个字节,而且全部 Bit 置 为0,告诉你这个变量没有引用任何实例
Student stu;
stu = new Student();
当前引用变量(栈上)里面存的是实例(堆上)的内存首地址
Student stu;
stu = new Student();
Student stu2;
stu2 = stu;
变量的默认值
一旦变量在内存中分配好后,它的内存块就被统统刷成 0,这就是它的默认值
局部变量没有默认值,因为 C# 为了避免不安全代码,要求局部变量必须有显式赋值
装箱与拆箱
int a = 100;
object obj;
obj未赋值,默认bit置为0
装箱
int a = 100;
object obj;
obj = a;
当前把100封装成object实例复制到堆上
引用变量obj(栈上)里面存的是100(堆上)的内存首地址
拆箱
int a = 100;
object obj;
obj = a;
int b = (int)obj;
Console.WriteLine(b);
转换成目标数据类型,从堆上拷贝回栈
装箱和拆箱会损失性能