http://www.cnblogs.com/John-Connor/archive/2012/04/13/2443765.html 中的例子
Member member1 = new Member { Name = "Marry", Num = "001" };
Member member2 = member1;
member1.Name = "John";
Console.WriteLine("member1.Name={0} member2.Name={1}",member1.Name,member2.Name);
int i = 1;
object o = i;
object o2 = o;
o = 2;
Console.WriteLine("o={0} o2={1}", o, o2);
string str1 = "Hello";
string str2 = str1;
str1 = "Hello,World!";
Console.WriteLine("str1={0} str2={1}", str1, str2);
Console.ReadKey();
结果:member1.Name=John member2.Name=John; o=2 o2=1 以及str1=Hello,World! str2=Hello
上面的例子其实都是两个实例都指向同一个地址,只不过第一个只是对对象成员赋值,地址没有改变。而第二和第三个地址经过
o=2和str1 = "Hello,World!"导致重新分配了内存地址而引用改变,所以会出现上边的结果。