=波波日志 > Asp.Net/C#/WCF > C#对象深克隆例子=

[转]C#对象深克隆例子

+展开
-C#
//第一步,新建一个可序列化的类,用于这个对象的克隆操作

[System.Serializable]
class TestA
{
    public int[] aaa ={0,0,0 };
    public object GetClone(object obj)
    { 
        using(System.IO.MemoryStream sm=new System.IO.MemoryStream())
        {
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryformatter =
                new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            binaryformatter.Serialize(sm, obj);
            sm.Seek(0, System.IO.SeekOrigin.Begin);
            object ob = binaryformatter.Deserialize(sm);
            return ob;
        }
    }

    public object GetClone2(object o)
    {
        return this.MemberwiseClone();
    }
}


//第二步,开始测试深克隆与浅克隆的区别(浅克隆不可以创建出新的引用,深克隆则相反)
class program
{
    static void Main()
    {
        TestA a = new TestA();
        TestA b = (TestA)a.GetClone(a);
        a.aaa[0] = 123;
        b.aaa[0] = 222;
        System.Console.WriteLine(a.aaa[0]);
        System.Console.WriteLine(b.aaa[0]);
        System.Console.WriteLine("___________________________");
        TestA a1 = new TestA();
        TestA b1 = (TestA)a1.GetClone2(a);
        a1.aaa[0] = 333;
        b1.aaa[0] = 444;
        System.Console.WriteLine(a1.aaa[0]);
        System.Console.WriteLine(b1.aaa[0]);

        System.Console.ReadLine();
    }
}

来源:http://2sws.blog.163.com/blog/static/1791024920098434454449/
类别:Asp.Net/C#/WCF 作者:转载 日期:2010-12-07 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012,桂ICP备05005887号 京公网安备1101055090