开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 360|回复: 1

[求助] MR.Value为什么会变化?

[复制链接]

0

精华

10

贡献

22

赞扬

帖子
1
软币
72
在线时间
1 小时
注册时间
2023-8-21
发表于 2024-11-9 15:54:46 | 显示全部楼层 |阅读模式
初学 自学C#,不明白这段代码
“    C MR = new C();    //使用new关键字创建引用对象
                C KJ = MR;    //使MR等于KJ
                KJ.Value = 112;    //设置变量KJ的Value值
                Console.WriteLine("Values:mr={0},kj={1}", mr, kj); //输出变量mr和kj
                Console.WriteLine("Refs:MR={0},KJ={1}", MR.Value, KJ.Value);//输出引用类型对象的Value值
给给引用对象KJ.Value赋值112,为什么MR.Value值也会变化,C语言不都是值从右边赋值给左边变量的吗? 有点不懂。能否指点下?

回复

使用道具 举报

0

精华

5291

贡献

6059

赞扬

管理员

帖子
1176
软币
22629
在线时间
4467 小时
注册时间
2013-6-7

黄马甲

发表于 2024-11-13 22:47:54 | 显示全部楼层
C#里的类是引用类型,当你使用new C();实例化一个类的时候,会在堆内存的某个地方划分一个区域存放数据,MR只是映射这块堆内存的地址,当执行 C KJ = MR; 时只是在进行引用赋值操作。此时 KJ 也指向 MR的那块堆内存地址,而不是创建了新的对象副本。

就像给一个人起两个名字,一个叫狗蛋一个叫铁柱,你去把狗蛋打了一顿,铁柱也就挨了打。
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 17:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表