static void WithProtobufDeepClone() { //ref: http://stackoverflow.com/questions/852064/faster-deep-cloning Person person = new Person { Id = 1, Name = "Tugberk", Surname = "Ugurlu", Age = 26, Phone = new Phone { No = "123456789" }, Integers = new List <int> { 1, 3, 5 } }; SPerson sPerson = new SPerson { Id = 1, Name = "Tugberk", Surname = "Ugurlu", Age = 26, Phone = new Phone { No = "123456789" }, Integers = new List <int> { 1, 3, 5 } }; Person person2 = Serializer.DeepClone(person); SPerson sPerson2 = Serializer.DeepClone(sPerson); Console.WriteLine("Should write 'Tugberk'"); person2.Name = "Ali Tugberk"; Console.WriteLine(person.Name); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write 'Tugberk'"); sPerson2.Name = "Ali Tugberk"; Console.WriteLine(sPerson.Name); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '26'"); person.Age = 27; Console.WriteLine(person2.Age); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '26'"); sPerson.Age = 27; Console.WriteLine(sPerson2.Age); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '123456789'"); person2.Phone.No = "987654321"; Console.WriteLine(person.Phone.No); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '123456789'"); sPerson2.Phone.No = "987654321"; Console.WriteLine(sPerson.Phone.No); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '3'"); sPerson2.Integers.RemoveAt(2); Console.WriteLine(sPerson.Integers.Count); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '3'"); person2.Integers.RemoveAt(2); Console.WriteLine(person.Integers.Count); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); }
static void WithoutDeepClone() { Person person = new Person { Id = 1, Name = "Tugberk", Surname = "Ugurlu", Age = 26, Phone = new Phone { No = "123456789" }, Integers = new List <int> { 1, 3, 5 } }; SPerson sPerson = new SPerson { Id = 1, Name = "Tugberk", Surname = "Ugurlu", Age = 26, Phone = new Phone { No = "123456789" }, Integers = new List <int> { 1, 3, 5 } }; Person person2 = person; SPerson sPerson2 = sPerson; Console.WriteLine("Should write 'Ali Tugberk'"); person2.Name = "Ali Tugberk"; Console.WriteLine(person.Name); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write 'Tugberk'"); sPerson2.Name = "Ali Tugberk"; Console.WriteLine(sPerson.Name); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '27'"); person.Age = 27; Console.WriteLine(person2.Age); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '26'"); sPerson.Age = 27; Console.WriteLine(sPerson2.Age); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '987654321'"); person2.Phone.No = "987654321"; Console.WriteLine(person.Phone.No); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '987654321'"); sPerson2.Phone.No = "987654321"; Console.WriteLine(sPerson.Phone.No); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '2'"); sPerson2.Integers.RemoveAt(2); Console.WriteLine(sPerson.Integers.Count); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); Console.WriteLine("Should write '2'"); person2.Integers.RemoveAt(2); Console.WriteLine(person.Integers.Count); Console.WriteLine("================================================================="); Console.Write(Environment.NewLine); }