Пример #1
0
        //静态方法:深度克隆一个对象
        public static PeoplePrototype CreateInstanceDeep()
        {
            PeoplePrototype peoplePrototype = (PeoplePrototype)_peoplePrototype.MemberwiseClone();

            //深度克隆,重新实例化一个对象和开辟一个内存,所以克隆的结果指向的地址每次都不一样
            peoplePrototype.Dept = new Dept()
            {
                Id   = 11,
                Name = "技术部"
            };
            return(peoplePrototype);
        }
Пример #2
0
 static PeoplePrototype()
 {
     _peoplePrototype = new PeoplePrototype()//静态构造函数,赋初始值
     {
         Id   = 1,
         Name = "ZhangYu",
         Dept = new Dept
         {
             Id   = 11,
             Name = "技术部"
         }
     };
 }
Пример #3
0
        static void Main(string[] args)
        {
            //Console.WriteLine("--------------------------------");
            //PeoplePrototype peoplePrototype1 = PeoplePrototype.CreateInstance();
            //Console.WriteLine("{0},{1}", peoplePrototype1.Name, peoplePrototype1.Id);
            //PeoplePrototype peoplePrototype2 = PeoplePrototype.CreateInstance();
            //Console.WriteLine("{0},{1}", peoplePrototype2.Name, peoplePrototype2.Id);
            //peoplePrototype2.Name = "hahahahha";//修改peoplePrototype2的值,不影响peoplePrototype3的值,证明他们不是同一个引用对象
            //Console.WriteLine("{0},{1}", peoplePrototype2.Name, peoplePrototype2.Id);
            //PeoplePrototype peoplePrototype3 = PeoplePrototype.CreateInstance();
            //Console.WriteLine("{0},{1}", peoplePrototype3.Name, peoplePrototype3.Id);
            //Console.WriteLine("--------------------------------");

            //Console.WriteLine("----------浅克隆----------------");
            //PeoplePrototype peoplePrototype4 = PeoplePrototype.CreateInstance();
            //Console.WriteLine("{0},{1}", peoplePrototype4.Dept.Name, peoplePrototype4.Dept.Id);
            //PeoplePrototype peoplePrototype5 = PeoplePrototype.CreateInstance();
            //Console.WriteLine("{0},{1}", peoplePrototype5.Dept.Name, peoplePrototype5.Dept.Id);
            //peoplePrototype4.Dept.Id = 22;
            //peoplePrototype4.Dept.Name = "测试部";//修改peoplePrototype4的Dept.Name,影响peoplePrototype5的值,证明Dept同一个引用对象
            //Console.WriteLine("{0},{1}", peoplePrototype4.Dept.Name, peoplePrototype4.Dept.Id);
            //Console.WriteLine("{0},{1}", peoplePrototype5.Dept.Name, peoplePrototype5.Dept.Id);
            //Console.WriteLine("--------------------------------");
            //Console.WriteLine("----------深克隆----------------");
            //PeoplePrototype peoplePrototype6 = PeoplePrototype.CreateInstanceDeep();
            //Console.WriteLine("{0},{1}", peoplePrototype6.Dept.Name, peoplePrototype6.Dept.Id);
            //PeoplePrototype peoplePrototype7 = PeoplePrototype.CreateInstanceDeep();
            //peoplePrototype6.Dept.Id = 22;
            //peoplePrototype6.Dept.Name = "测试部";
            //Console.WriteLine("{0},{1}", peoplePrototype6.Dept.Name, peoplePrototype6.Dept.Id);
            //Console.WriteLine("{0},{1}", peoplePrototype7.Dept.Name, peoplePrototype7.Dept.Id);
            Console.WriteLine("----------深克隆----------------");
            PeoplePrototype peoplePrototype8 = PeoplePrototype.CreateInstanceSerialize();

            Console.WriteLine("{0},{1}", peoplePrototype8.Dept.Name, peoplePrototype8.Dept.Id);
            PeoplePrototype peoplePrototype9 = PeoplePrototype.CreateInstanceSerialize();

            peoplePrototype8.Dept.Id   = 22;
            peoplePrototype9.Dept.Name = "测试部";
            Console.WriteLine("{0},{1}", peoplePrototype8.Dept.Name, peoplePrototype8.Dept.Id);
            Console.WriteLine("{0},{1}", peoplePrototype9.Dept.Name, peoplePrototype9.Dept.Id);



            Console.ReadKey();
        }
Пример #4
0
        //静态方法:克隆一个对象
        public static PeoplePrototype CreateInstance()
        {
            PeoplePrototype peoplePrototype = (PeoplePrototype)_peoplePrototype.MemberwiseClone();

            return(peoplePrototype);
        }