本帖最后由 张伟86 于 2013-5-2 22:05 编辑
前面的大家说的很全面,我来补充点关于class的
在C#中,Person p1 = new Person() ; 上面的代码将会在堆中生成一个对象,并且让引用p1指向这个对象,而引用p1本身位于栈中,占用四个字节(在32位处理器上,即一个指针的长度)。
Person p2 ; 该声明将会在栈中生成一个长度位4字节的引用变量s2,并且缺省为null,即该引用不指向任何实例。 p2 = p1 ; 该赋值语句并没有调用赋值运算符,而是仅仅使s2指向s1所指向的对象。所以上述语句执行完后,内存布局大致如下图
|