内存堆栈和托管堆简单例子理解

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!"导致重新分配了内存地址而引用改变,所以会出现上边的结果。

posted on 2015-01-14 17:09  Knight_AWP  阅读(142)  评论(0编辑  收藏  举报

导航