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

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

转载于:https://www.cnblogs.com/nearpengju123/p/4224391.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值