C#值类型和引用类型在内存中的分配(栈和堆上的分配)

https://www.cnblogs.com/Echo_saq/archive/2012/11/09/2762763.html

https://www.jb51.net/article/53668.htm

https://blog.csdn.net/shine_zs/article/details/51160695
4、判断两个对象是否相等
https://www.cnblogs.com/wangchaoyuana/p/7545159.html

5、如何判断值类型和引用类型在内存上的地址?
我们可以通过vs来判断一个变量在栈上以及堆上的地址,其中值类型仅仅在栈上分配内存,我们先看值类型的地址怎么查?如下:
在这里插入图片描述
程序卡在断点-》在局部变量所在的区域(vs下方)右击添加监视-》在监视的名称一栏输入"&变量名",即可得到值类型变量在栈上的地址,以及变量的值。

引用类型变量怎么查在栈以及堆上的地址,因为引用类型的变量在栈上的地址只是引用的地址,而其存储的值才是是引用类型成员变量的地址(在堆上的地址),所以当我们对引用类型进行浅拷贝的时候,引用本身在栈上地址发生了变化,而拷贝前拷贝后的成员变量所在的堆上的地址没有发生变化,当我们使用“= =”号判断两个对象是否相等的时候呀,一定要注意“= =”对于值类型来说判断的是值是否相等,对于引用类型来说判断的是两个对象的地址是否相同,即两个引用所存储的成员变量所在的堆上的地址是否相同。
如下图:
在这里插入图片描述

6、关于引用对象的理解
publicclass Test
{
}
Test test=new Test();
new关键字创建了一个Test类型的对象,并返回了存储对象的地址给test,test称为引用类型的变量,其存储的正是Test类型生成的一个对象所在的地址,test不是对象!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c#上位机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值