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";//改变一下它的值然后盾原本的值是否一样。

  • 相关阅读:
    iOS中循环引用的解除
    Block的循环引用详解
    Mac OS X下面 Node.js环境的搭建
    swift中闭包和OC的block的对比
    STL priority_queue
    优先使用map(或者unordered_map)的find函数而非algorithm里的find函数
    Insert Interval
    Integer Break
    Unique Binary Search Trees
    腾讯2016实习生笔试
  • 原文地址:https://www.cnblogs.com/pnljs/p/2224991.html
Copyright © 2011-2022 走看看