前言:我们知道对象分引用类型和值类型。

浅克隆:复制一个现有对象,引用类型指向同一个内存块(string为最特殊的对象,这里当作值类型来看先)

public class User    
  {
        public int Age { get; set; }
        public string UserName { get; set; }
        public List<string> List { get; set; }
        public User ShallowCopy()
        {
            return this.MemberwiseClone() as User;
        }
    }

  class Program
    {
        static void Main(string[] args)
        {
            var user = new User();
            user.List = new List<string>();
            user.Age = 1;
            user.UserName = "lisi";
            user.List.Add("lst1");
    

            var cloneUser = user.ShallowCopy();

            Console.WriteLine(user.List.Count());
            Console.WriteLine(cloneUser.UserName);
            Console.WriteLine(user.Age);

            cloneUser.Age = 2;
            cloneUser.UserName = "zhangsan";
            cloneUser.List.Add("lst2");



            Console.WriteLine(user.List.Count());
            Console.WriteLine(cloneUser.UserName);
            Console.WriteLine(user.Age);
            Console.ReadKey();

        }
    }
Shallow Copy Code

相关文章: