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

  • 相关阅读:
    PHP+MySQL
    Appstore排名前十的程序员应用软件
    架构师的平凡之路
    程序员,如何三十而立?
    不懂技术也可以轻松开发一款APP
    php语法学习:轻松看懂PHP语言
    你真的了解软件测试行业吗?
    十个程序员必备的网站推荐
    从更高点看软件开发的侧重点
    php如何实现文件下载
  • 原文地址:https://www.cnblogs.com/pnljs/p/2224991.html
Copyright © 2011-2022 走看看