当前位置:  开发笔记 > 编程语言 > 正文

你如何制作一个对象的副本?

如何解决《你如何制作一个对象的副本?》经验,为你挑选了1个好方法。

我创建了一个名为Colors的类.我在Colors对象上设置了某些属性并将其设置在Session变量中.当我在另一个页面上访问Session变量时,我注意到如果我在下面的objColors上更改属性,它会更改Session并且不保留原始属性,这是我想要它做的.这是一个例子:

Session["Colors"] = Colors;

Colors objColors = Session["Colors"];

//If I change objColors, it changes the Session.  I don't want this to happen.

是否有更好的方法来保留原始属性?为什么这样做?



1> Samantha Bra..:

为Colors创建一个复制构造函数.然后,这样做.

Colors objColors = new Colors((Colors)Session["Colors"]);

在新的构造函数中,只需复制所需的值并执行与构造函数相关的其他操作.

您的代码中发生的是您获得指向 Colors对象的指针.Session ["Colors"]和objColors指向内存中的同一个对象,因此当您修改一个对象时,更改会反映在两者中.你想要一个品牌spankin'新的Colors对象,其值从objColors或Session ["Colors"]初始化.

编辑:复制构造函数可能如下所示:

public Colors(Colors otherColors)
{
    this.privateVar1 = otherColors.privateVar1;
    this.publicVar2 = otherColors.publicVar2;
    this.Init();
}

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有