前言:我们知道对象分引用类型和值类型。
浅克隆:复制一个现有对象,引用类型指向同一个内存块(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(); } }