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语言不都是值从右边赋值给左边变量的吗? 有点不懂。能否指点下?
C#里的类是引用类型,当你使用new C();实例化一个类的时候,会在堆内存的某个地方划分一个区域存放数据,MR只是映射这块堆内存的地址,当执行 C KJ = MR; 时只是在进行引用赋值操作。此时 KJ 也指向 MR的那块堆内存地址,而不是创建了新的对象副本。
就像给一个人起两个名字,一个叫狗蛋一个叫铁柱,你去把狗蛋打了一顿,铁柱也就挨了打。
页:
[1]