zoukankan      html  css  js  c++  java
  • C#之深度复制和浅度复制

    深度复制就是引用类型的复制

    浅度复制是值类型的复制

    例如:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        public class Content
        {
            public int val;

        }

       //此处若是深度复制才继承ICloneable接口
        //public class Cloner : ICloneable

        public class Cloner
        {
            public Content MyContent = new Content();
            public Cloner(int newVal)
            {
                MyContent.val = newVal;
            }

    //浅度复制

    //使用System.Object.MemberwiseClone()进行浅度复制,使用getCopy方法.

           public object getCopy()
            {
                return MemberwiseClone();   
            }

    //深度复制:
            public object clone()
            {
                Cloner clonedCloner = new Cloner(MyContent.val); //此处是实例化一个对象
                return clonedCloner;
            }

        }
    }

    //主函数

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Cloner mySource = new Cloner(5);
                Cloner myTarget = (Cloner)mySource.getCopy();//深度为cloner
                Console.WriteLine("MyTarget.Mycontent.Val={}",myTarget.MyContent.val);
                mySource.MyContent.val = 2;
                Console.WriteLine("MyTarget.Mycontent.Val={}", myTarget.MyContent.val);
            }
        }
    }

  • 相关阅读:
    linux库
    java实现第七届蓝桥杯路径之谜
    java实现第七届蓝桥杯路径之谜
    java实现第七届蓝桥杯路径之谜
    java实现第七届蓝桥杯打印数字
    java实现第七届蓝桥杯打印数字
    java实现第七届蓝桥杯打印数字
    java实现第七届蓝桥杯打印数字
    java实现第七届蓝桥杯七星填数
    java实现第七届蓝桥杯七星填数
  • 原文地址:https://www.cnblogs.com/flish/p/2724939.html
Copyright © 2011-2022 走看看