类型、变量与对象



引用类型的变量与实例

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);

转换成目标数据类型,从堆上拷贝回栈

装箱和拆箱会损失性能

C