Clone a list of cloneable objects : ICloneable : Class C# Examples


C# Examples » Class » ICloneable »

 

Clone a list of cloneable objects









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

public  class  Employee  :  ICloneable
{
        public  string  Name;
        public  string  Title;
        public  int  Age;

        public  Employee(string  name,  string  title,  int  age)
        {
                Name  =  name;
                Title  =  title;
                Age  =  age;
        }

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

        public  override  string  ToString()
        {
                return  string.Format("{0}  ({1})  -  Age  {2}",  Name,  Title,  Age);
        }
}

public  class  EmployeeList  :  ICloneable
{
        public  List<Employee>  EmployeeListMembers  =    new  List<Employee>();

        public  EmployeeList()
        {
        }

        private  EmployeeList(List<Employee>  members)
        {
                foreach  (Employee  e  in  members)
                {
                        EmployeeListMembers.Add((Employee)e.Clone());
                }
        }

        public  void  AddMember(Employee  member)
        {
                EmployeeListMembers.Add(member);
        }

        public  override  string  ToString()
        {
                StringBuilder  str  =  new  StringBuilder();

                foreach  (Employee  e  in  EmployeeListMembers)
                {
                        str.AppendFormat("    {0}\r\n",  e);
                }

                return  str.ToString();
        }

        public  object  Clone()
        {
                return  new  EmployeeList(this.EmployeeListMembers);
        }
}

public  class  MainClass
{
        public  static  void  Main()
        {
                EmployeeList  team  =  new  EmployeeList();
                team.AddMember(new  Employee("A",  "AA",  4));
                team.AddMember(new  Employee("B",  "BB",  8));
                team.AddMember(new  Employee("C",  "CC",  8));

                EmployeeList  clone  =  (EmployeeList)team.Clone();

                Console.WriteLine("Original  EmployeeList:");
                Console.WriteLine(team);

                Console.WriteLine("Clone  EmployeeList:");
                Console.WriteLine(clone);

                Console.WriteLine("***  Make  a  change  to  original  team  ***");
                team.EmployeeListMembers[0].Name  =  "L";
                team.EmployeeListMembers[0].Title  =  "M";
                team.EmployeeListMembers[0].Age  =  4;

                Console.WriteLine("Original  EmployeeList:");
                Console.WriteLine(team);

                Console.WriteLine("Clone  EmployeeList:");
                Console.WriteLine(clone);
        }
}
    
   
  
   



Output

Original EmployeeList:
  A (AA) - Age 4
  B (BB) - Age 8
  C (CC) - Age 8

Clone EmployeeList:
  A (AA) - Age 4
  B (BB) - Age 8
  C (CC) - Age 8

*** Make a change to original team ***
Original EmployeeList:
  L (M) - Age 4
  B (BB) - Age 8
  C (CC) - Age 8

Clone EmployeeList:
  A (AA) - Age 4
  B (BB) - Age 8
  C (CC) - Age 8


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Class
» ICloneable