zoukankan      html  css  js  c++  java
  • 浅拷贝与深拷贝

    这里就不解释什么是浅拷贝与深拷贝了,只说一下我遇到的问题,然后怎么解决,这样大家什么就明白了

    问题:我要对某一个类的副本进行操作,但是用了各种办法去复制,当我改变副本的东西之后,发现原来的数据也发生了变化,这样是不对的,我只想对其复本操作,原来的数据不能变。

    解决办法:

    [Serializable]//这是必须的。你可以不加试试看

    public class Test

    {  

       string name = String.Empty;

        /// <summary>
            /// 深拷贝
            /// </summary>
            /// <returns></returns>
            public object DeepCopy()
            {
                MemoryStream stream = new MemoryStream();
                BinaryFormatter formatter = new BinaryFormatter();

                formatter.Serialize(stream, this);
                stream.Seek(0, SeekOrigin.Begin);

                object copy = formatter.Deserialize(stream);
                stream.Close();

                return copy;
            }       

    }

    使用:

    Test test = new Test();

    test.name = "1234";

    Test test_copy = (Test)test.DeepCopy();

    test_copy.name = "123";//改变一下它的值然后盾原本的值是否一样。

  • 相关阅读:
    java页面请求跑批处理sql的有关问题
    Linux下一个检查跑批是否成功的Shell
    redhat Linux5 安装vsftp .
    LINUX FTP简单配置
    java代理机制
    详细解析Java中抽象类和接口的区别
    抽象类和接口的区别
    SVN与Git比较
    浅谈存储过程和触发器
    存储过程,触发器,函数 学习总结
  • 原文地址:https://www.cnblogs.com/pnljs/p/2224991.html
Copyright © 2011-2022 走看看