zoukankan      html  css  js  c++  java
  • C# ICloneable,shallow clone,deep clone.

     1 [Serializable]
     2     public class Person:ICloneable
     3     {       
     4         public string Name { get; set; }
     5         public int Id { get; set; }
     6         public int Age { get; set; }
     7         public Department Department { get; set; }
     8 
     9         public object Clone()
    10         {
    11            return  this.MemberwiseClone();
    12         }
    13 
    14 
    15         public Person ShallowClone()
    16         {
    17             return Clone() as Person;
    18         }
    19 
    20         public Person DeepClone()
    21         {
    22             using (Stream objStream = new MemoryStream())
    23             {
    24                 IFormatter formatter = new BinaryFormatter();
    25                 formatter.Serialize(objStream, this);
    26                 objStream.Seek(0, SeekOrigin.Begin);
    27                 return formatter.Deserialize(objStream) as Person;
    28             }
    29         }
    30     }
    31 
    32     [Serializable]
    33     public class Department
    34     {
    35         public string DeptName { get; set; }
    36         public int DeptId { get; set; }
    37     }


     1  class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             CloneDemo();
     6             Console.ReadLine();
     7         }
     8 
     9         static void CloneDemo()
    10         {
    11             Person fred = new Person()
    12             {
    13                 Id = 1,
    14                 Name = "Fred",
    15                 Age = 32,
    16                 Department=new Department()
    17                 {
    18                     DeptId=1,
    19                     DeptName="Dept1"
    20                 }
    21             };
    22 
    23             Console.WriteLine($"fred,name:{fred.Name},Id:{fred.Name},department name:{fred.Department.DeptName},deptid:{fred.Department.DeptId}");
    24 
    25             Person shallowClonePerson = fred.ShallowClone() as Person;
    26             Console.WriteLine($"shallowClonePerson,Name:{shallowClonePerson.Name},Id:{shallowClonePerson.Id},department name:{shallowClonePerson.Department.DeptName},deptId:{shallowClonePerson.Department.DeptId}");
    27 
    28             fred.Id = 2;
    29             fred.Name = "fred2";
    30             fred.Age = 33;
    31             fred.Department.DeptId = 2;
    32             fred.Department.DeptName = "dept2";
    33             Console.WriteLine($"shallowClonePerson,Name:{shallowClonePerson.Name},Id:{shallowClonePerson.Id},department name:{shallowClonePerson.Department.DeptName},deptId:{shallowClonePerson.Department.DeptId}");
    34 
    35 
    36             Person deepClonePerson = fred.DeepClone() as Person;                      
    37             Console.WriteLine($"deepClonePerson,Name:{deepClonePerson.Name},Id:{deepClonePerson.Id},department name:{deepClonePerson.Department.DeptName},id:{deepClonePerson.Department.DeptId}");
    38                         
    39             fred.Id = 3;
    40             fred.Name = "Fred3";
    41             fred.Age = 34;
    42             fred.Department.DeptId = 3;
    43             fred.Department.DeptName = "dept3";
    44             Console.WriteLine($"deepClonePerson,Name:{deepClonePerson.Name},Id:{deepClonePerson.Id},department name:{deepClonePerson.Department.DeptName},id:{deepClonePerson.Department.DeptId}");
    45         }
    46 }
  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/Fred1987/p/11558433.html
Copyright © 2011-2022 走看看