示例#1
0
        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);
        }
示例#2
0
        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);
        }