c#实例化问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 20:21:03
people是一个类。people chinese = new people();请问右边的的new people的作用是什么?如果只写people chinese 又是什么意思呢?是不是分配一个存储单元呢?

people chinese;
定义一个变量chinese, 该变量的数据类型是people

int a;
定义一个变量a, 该变量的数据类型是int

a 是个值类型, 在定义的时候, 有默认值=0
chinese 是个引用类型, 自定义的时候, 默认值是=null

当变量为null(空)时, 没有在内存分配空间, 这时候变量是不能使用的
people chinese = new people();
这里 new 的意识是实例化该变量, 即在内存分配空间...

当数据类型被实例化后就可以使用该变量了...

people chinese;这种情况下只是在“堆栈”中分配了一个内存地址用于存放“托管堆”中的对象地址。

new people();分配堆上的内存,以存储people实例(一个真正的实例,不只是一个地址)。然后把变量chinese的值设置为people实例的内在地址。

“堆栈” 用于存储不是对象类型的值数据类型。
“托管堆” 垃圾回收器会管理的空间,当没有引用的时候垃圾回收器会自动清除。

这些信息在“C#高级编程”第7章 内存管理和指针 中有详细的解释。