运行结果:

2.引用类型
引用类型实际的值存放在堆中,在栈中分配堆中分配空间的地址。那么当引用类型离开对象的作用域会发生什么?参考如下代码:
- class MyClass {
- public int a; }
- class Program
- { static void Main(string[] args)
- { //此时在堆中分配一个空间存放10,在栈中分配一个空间存放堆中10的空间地址
- MyClass mc1 = new MyClass(); mc1.a = 10;
- //此时在堆中又分配一个空间存放20,在栈中分配一个空间存放堆中20的空间地址
- MyClass mc2 = new MyClass(); mc2.a = 20;
- //此时将a中栈的地址赋值给b
- //那么此时 b 也指向 a在堆中分配的地址 //此时b原来指向的堆空间地址存放的20就被废弃了
- mc1 = mc2;
- //修改该a 和 b 同时指向的堆空间的值为30 mc2.a = 30;
- //打印结果
- Console.WriteLine(" mc1.a = {0}", mc1.a); Console.WriteLine(" mc2.a = {0}", mc2.a);
- }
- }
运行结果如下:










