首页 新闻 会员 周边 捐助

关于深度复制的问题,惆怅啊!!!!!!!!!!!!!!!

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-06 17:02

想对   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
                   
        }
水墨.MR.H的主页 水墨.MR.H | 菜鸟二级 | 园豆:280
提问于:2012-05-31 14:47
< >
分享
最佳答案
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];

 

就可以了~以上代码没测试过!~ 不过我就这么干的~ 别的更好的方法我也很想知道。

收获园豆:5
Andrew.Wangxu | 菜鸟二级 |园豆:211 | 2012-05-31 21:36
其他回答(1)
0

原型设计模式里能实现吧

.net指令 | 园豆:155 (初学一级) | 2012-06-01 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册