首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于类的实例化的有关问题

2013-07-11 
关于类的实例化的问题我想问个问题假如class People{…………………………;}People pnew People()说明是定义了个新

关于类的实例化的问题
我想问个问题
假如
class People
{
    …………………………;
}   
People p=new People();   说明是定义了个新的对象。

那么,我想问   People p; 说明啥?


是不是说,这时候p只是放在了栈上?
而没有放到堆上?
只有new出来以后,才会放到堆上去?
是这么理解的吗?

[解决办法]
不管你new没有,p都是作为一个引用放在栈上的。
如果没有实例化,即没有new一个对象,那么p的值null.
如果new了一个对象,那么会在堆上为这个对象分配一段内存,然后p指向这段内存。
[解决办法]
People p;
相当于
People p = null;
如果这一行写在方法内,那么p放在堆栈上,但是不引用任何内容。
People p = new People();
p也放在堆栈上,指向一个托管堆上的People的实例。

热点排行