C#编程自学之数据类型和变量二

2019-12-26 13:35:01于丽

运行结果:

C#编程自学之数据类型和变量二

2.引用类型

引用类型实际的值存放在堆中,在栈中分配堆中分配空间的地址。那么当引用类型离开对象的作用域会发生什么?参考如下代码:

 

 
  1. class MyClass  { 
  2. public int a;   } 
  3.   class Program 
  4. {  static void Main(string[] args) 
  5. {  //此时在堆中分配一个空间存放10,在栈中分配一个空间存放堆中10的空间地址 
  6. MyClass mc1 = new MyClass();  mc1.a = 10; 
  7.   //此时在堆中又分配一个空间存放20,在栈中分配一个空间存放堆中20的空间地址 
  8. MyClass mc2 = new MyClass();  mc2.a = 20; 
  9.   //此时将a中栈的地址赋值给b 
  10. //那么此时 b 也指向 a在堆中分配的地址  //此时b原来指向的堆空间地址存放的20就被废弃了 
  11. mc1 = mc2;   
  12. //修改该a 和 b 同时指向的堆空间的值为30  mc2.a = 30; 
  13.   //打印结果 
  14. Console.WriteLine(" mc1.a = {0}", mc1.a);  Console.WriteLine(" mc2.a = {0}", mc2.a); 
  15.   } 

运行结果如下: