想对 myWebRequestLN 类中的 CookieContainer成员 深度复制!
可是代码实现出来的不对! (CookieContainer 是net framework 自带的类)
代码如下:
public class Cloner:ICloneable { public myWebRequestLN request = new myWebRequestLN(); public Cloner(CookieContainer cct) { request.cc = cct; } #region ICloneable 成员 public object Clone() { Cloner clonedCloner = new Cloner(request.cc); return clonedCloner; } #endregion }
public class myWebRequestLN { public CookieContainer cc = new CookieContainer(); }
按钮事件
(疑问:点击按钮深度复制,对象b深度复制a,然后修改a对象的成员,发现b成员也修改了)
private void button7_Click(object sender, EventArgs e) { Cloner a = new Cloner(new CookieContainer()); Cloner b = (Cloner)a.Clone(); a.request.cc.Add(new Cookie("a", "111", "", "test.com.cn")); a.request.cc.Add(new Cookie("b", "111", "", "test.com.cn")); MessageBox.Show(a.request.cc.Count + "--" + b.request.cc.Count); //想实现的是 a count为2,b count为0 }
教你个深度复制的办法。
比如我有个Class1对象
Class1 a = new Class1();
Class b = a; //这样肯定是错误的,没复制上。
把第二行代码改为:
List<Class1> listTemp = new List<Class1>();
listTemp.Add(a);
Class1[] arrayTemp = new Class1[1];
listTemp.CopyTo(arrayTemo);
Class b = arrayTemp[0];
就可以了~以上代码没测试过!~ 不过我就这么干的~ 别的更好的方法我也很想知道。
原型设计模式里能实现吧