.天轰穿C# vs2010 04面向对象的编程之实例化类对象【原创】

实例化就是创建对象的过程。

使用new关键字可以建立类的一个实例,而我们这一句中小写的user 就是对象引用的名字。同理,我们还可以使用如下语法,实例化出

更多的对象:

User user = new User();

            User user_a = new User();

            User user_b;           //创建对象引用
            user_b = new User();   //
创建对象

这个前两句的意思是分别创建了useruser_a两个对象,第三和第四句是什么意思?

对象与对象引用

老田:这个问题我建议你再回去看下第二章关于引用类型的介绍。

在第二章我们说到类是引用类型,而引用类型最大的特点是,申明变量其实只是创建了引用,而实例化的时候才真正开辟存储对象的内

存空间。换句话说,只有实例化过后的对象才有存储内容的内存空间。对象引用可以理解成一串数字,它是内存地址。对象变量保存的仅仅

是对象的一个引用,不是对象本身!这点是非常重要的!

User  c;             //声明对象引用

c = new User ();        //生成类的对象

c = new User ();

咱们进一步深入到栈和堆的概念中去。当我们程序执行User c,其实是在栈中分配了一块地址空间,内容为空;之后我们将c = new Use

r
() 此时在堆中分配了内存地址用于存放User的对象!同时把这个地址传入给栈中c的内容,但我要注意到c中只是存放对象的引用。在这里

我们注意到,在调用第二个c = new User()的时候,这时实际上是在堆中重新开辟了一块空间,然后将地址返回到栈中。c将指向这个地址空

间,而第一个c = new
User()中由于没有其他指针来指向它,它的内存空间将被.NET垃圾回收系统所回收。


本文章为天轰穿原创文章,转载请注明出处及作者。


原文地址:https://www.cnblogs.com/thcjp/p/2826289.html