jsh560 发表于 2024-11-9 15:54:46

MR.Value为什么会变化?

初学 自学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语言不都是值从右边赋值给左边变量的吗? 有点不懂。能否指点下?

羽叶 发表于 2024-11-13 22:47:54

C#里的类是引用类型,当你使用new C();实例化一个类的时候,会在堆内存的某个地方划分一个区域存放数据,MR只是映射这块堆内存的地址,当执行 C KJ = MR; 时只是在进行引用赋值操作。此时 KJ 也指向 MR的那块堆内存地址,而不是创建了新的对象副本。

就像给一个人起两个名字,一个叫狗蛋一个叫铁柱,你去把狗蛋打了一顿,铁柱也就挨了打。
页: [1]
查看完整版本: MR.Value为什么会变化?