using System.Collections.Generic;
using System.Threading.Tasks;
static void Main(string[] args)
Person person1 = new Person("George", 40);
Person person2 = person1.ShallowCopy();
Console.WriteLine("Shallow Copy before changes:");
Console.WriteLine("Person1: " + person1.Details());
Console.WriteLine("Person2: " + person2.Details());
person1.Name = "Charles";
Console.WriteLine("Shallow Copy after changes:");
Console.WriteLine("Person1: " + person1.Details());
Console.WriteLine("Person2: " + person2.Details());
Person person3 = person1.DeepCopy();
Console.WriteLine("Deep Copy before changes:");
Console.WriteLine("Person1: " + person1.Details());
Console.WriteLine("Person3: " + person3.Details());
Console.WriteLine("Deep Copy after changes:");
Console.WriteLine("Person1: " + person1.Details());
Console.WriteLine("Person3: " + person3.Details());
Console.WriteLine("Press any key to exit.");
public Person(string name, int age)
public Person ShallowCopy()
return (Person)this.MemberwiseClone();
Person newPerson = new Person(Name, Age);
public int Age { get; set; }
public string Name { get; set; }
return Name + " is " + Age.ToString();