引用类型之间赋值,实质上是复制了对象在内存中的地址,在开发中这样的使用可能会给程序带来意想不到的Bug(bug好像都是意想不到的哈~-~)。
但是在使用引用类型直接赋值时一定要注意他的“副作用”,下面代码显示了引用类型赋值所带来的“副作用
 
我们直接看下面的代码:
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     public class AClass  
  8.     {  
  9.         public int Filed = 0;  
  10.     }  
  11.     class Program  
  12.     {  
  13.         static void Main(string[] args)  
  14.         {  
  15.             AClass A=new AClass();  
  16.             A.Filed = 5;  
  17.             Console.WriteLine("最开始 A.Filed=" + A.Filed);  
  18.  
  19.             AClass B = new AClass();  
  20.             B.Filed = 10;  
  21.             Console.WriteLine("最开始 B.Filed=" + A.Filed);  
  22.  
  23.             B = A;//此时A.Filed=5B.Filed=5   
  24.             Console.WriteLine("执行B=A后  B.Filed=" + A.Filed);  
  25.  
  26.             B.Filed = 15;//此时A.Filed=15B.Filed=15 (我们只是改变了B,A跟着一起改变了)  
  27.  
  28.             Console.WriteLine("执行B.Filed = 15后:");  
  29.             Console.WriteLine("A.Filed=" + A.Filed);  
  30.             Console.WriteLine("B.Filed=" + B.Filed);  
  31.             Console.ReadLine();  
  32.         }  
  33.     }  
  34. }  

 

运行结果:

 

引用类型之间赋值的“副作用”_赋值 

 

 

其实我们在
 
第26行代码 
B.Filed = 15; //此时A.Filed=15; B.Filed=15 (我们只是改变了B,A跟着一起改变了) 
也许我们并不想让A跟着一起改变,但是A在我们修改B的时候一起改变了!
 
一点小小的经验,曾经因为此出过bug,希望能给大家带来帮助!o(∩_∩)o