Example #1
0
        public IDeepCopy DeepClone()
        {
            DeepCopy clone = this.MemberwiseClone() as DeepCopy;

            clone.account        = new Account();
            clone.account.Number = this.account.Number;
            clone.account.Pan    = this.account.Pan;
            return(clone as IDeepCopy);
        }
        static void Main(string[] args)
        {
            // Shallow copy simply we can achive using MemberWiseClone() but it is working with
            // only value type but when talk about reference type we use deep copy where be create
            // explicitly create object all reference type class

            // Shallow example
            Shallow sh1 = new Shallow();

            sh1.Name   = "mukesh dutt";
            sh1.Mobile = "9717915661";

            // Cloning the previous object into new class
            Shallow sh2 = sh1.Clone() as Shallow;

            sh2.Name   = "alok singh";
            sh2.Mobile = "9878778788";

            System.Console.WriteLine("-------------Shallow Copy-------------");
            System.Console.WriteLine($"Name : {sh1.Name} ");
            System.Console.WriteLine($"Mobile : {sh1.Mobile} ");

            System.Console.WriteLine("---------After copied and change cloned data previous values are still remain--------");
            System.Console.WriteLine($"Name : {sh1.Name} ");
            System.Console.WriteLine($"Mobile {sh1.Mobile} ");

            // Deep copy example
            DeepCopy de1 = new DeepCopy();

            de1.Name           = "mukesh dutt";
            de1.Mobile         = "9717915661";
            de1.account.Number = "102121";
            de1.account.Pan    = "ASAJKFJSK12";

            // Cloning the previous object into new class
            DeepCopy de2 = de1.DeepClone() as DeepCopy;

            de2.Name           = "alok singh";
            de2.Mobile         = "9878778788";
            de2.account.Number = "32102121";
            de2.account.Pan    = "43JSK12";

            System.Console.WriteLine("-------------------Deep Copy-------------------");
            System.Console.WriteLine($"Name : {de1.Name} ");
            System.Console.WriteLine($"Mobile : {de1.Mobile} ");
            System.Console.WriteLine($"Account number : {de1.account.Number} ");
            System.Console.WriteLine($"Pan details : {de1.account.Pan} ");

            System.Console.WriteLine("---------After copied and change cloned data previous values are still remain--------");
            System.Console.WriteLine($"Name : {de1.Name} ");
            System.Console.WriteLine($"Mobile : {de1.Mobile} ");
            System.Console.WriteLine($"Account number : {de1.account.Number} ");
            System.Console.WriteLine($"Pan : {de1.account.Pan}");
        }