对象赋值的有关问题,当执行B=A,然后改变B中的一些内容后,结果A也同时进行了改变
对象赋值的问题,当执行BA,然后改变B中的一些内容后,结果A也同时进行了改变我编写了一个类Px,并定义了两个
对象赋值的问题,当执行B=A,然后改变B中的一些内容后,结果A也同时进行了改变 我编写了一个类Px,并定义了两个类对象A、B,把A实例化后,B没有实例化,这时执行B=A,然后改变B中的一些内容后,结果A也同时进行了改变。怎么能操作B时与A脱离关系。 如何在类函数中实现B=A这种功能。是否可以采用重载解决。[解决办法] 最简单的,把 Px 从 class 改为 struct[解决办法] = 这个符号不能重载,最好是增加个 复制 的方法,在 B=A 时调用 B=A.Clone()[解决办法]
探讨 引用: = 这个符号不能重载,最好是增加个 复制 的方法,在 B=A 时调用 B=A.Clone() A.后找不到Clone()这个函数啊。我用的是vs2008.[解决办法] 2楼正解
[解决办法] 探讨 引用: 所有引用类型(数组、类)在使用=赋值时都是引用赋值,即 B=A 表示把B指向A的地址,结果B、A都指向一个地址,当修改了B之后,A自然自动被修改了。 一定要先了解值类型和引用类型的区别。 我发问的目的就是如何能摆脱让B不与A指向同一个地址,像C++那样,用简单的方法,不用自己去编写复杂的复制方法就能够实现。[解决办法] 在.Net 3.5以上可以使用JSON进行序列化、反序列化,也可以找一些第三方的序列化/反序列化工具进行,这样就能实现深拷贝了。
A->序列化->反序列化->B,这样A和B就是完全独立的两个对象,彼此互不干扰。
[解决办法] 自己编写clone很复杂么?一点也不复杂吧
C# codeclass px { public string str = ""; public int a = 0; public px(){} public px Copy() { px P = new px(); P.a = this.a; P.str = this.str; //所有的字段属性赋值 return P; } }A=B.Copy();这样A、B就独立了