-2
  • 我有一个 Class X,它的对象是 objX,我为它设置了属性并将它存储在 Session 中。
  • 创建另一个相同类型 X 的对象 objY。将 objX 的内容复制到 objY,例如:objY = objX。
  • 现在,当我更改 objX 的属性时,它会在 objY 中更改。
  • 即使我喜欢 objY = (X)Session["objX"],它给出的结果与 objX 相同

为什么会发生这种情况,如何避免?如何避免?

4

1 回答 1

2

您不是在克隆对象,而只是在执行 objX =objY 时复制引用。使用正确实施的克隆方法。

克隆:

public Class X{
  public String A;
  public String B;
  public X Clone(){
     X cl = new X();
     cl.A = this.A;
     cl.B = this.B;
     return cl;
  }            
}

语法可能不是 100% 正确的。

于 2013-04-14T17:46:56.973 回答