public static void SerializaClone() { WeeklyLog log = new WeeklyLog(); log.Name = "Victor"; log.Date = "第11周"; log.Content = "这周工作太忙,每天都在加班!~~~~(>_<)~~~~"; log.attachmentList.Add(new Attachment() { Name = "周报附件.xls" }); WeeklyLog log2 = log.Clone() as WeeklyLog; log2.Date = "第12周"; WeeklyLog log3 = log.Clone() as WeeklyLog; log3.Date = "第13周"; Console.WriteLine("周报哈希:"); Console.WriteLine("log : " + log.GetHashCode().ToString("X")); Console.WriteLine("log2 : " + log2.GetHashCode().ToString("X")); Console.WriteLine("log3 : " + log3.GetHashCode().ToString("X")); Console.WriteLine("附件哈希:"); Console.WriteLine("log.attachmentList.First() : " + log.attachmentList.First().GetHashCode().ToString("X")); Console.WriteLine("log2.attachmentList.First() : " + log2.attachmentList.First().GetHashCode().ToString("X")); Console.WriteLine("log3.attachmentList.First() : " + log3.attachmentList.First().GetHashCode().ToString("X")); }
public static void PrintWeeklyLog(WeeklyLog log) { if (log == null) { return; } Console.WriteLine("----------- start : M公司个人工作周报 -----------"); Console.WriteLine("周次:{0}", log.Date); Console.WriteLine("员工:{0}", log.Name); Console.WriteLine("内容:{0}", log.Content); Console.WriteLine("----------- end : M公司个人工作周报 -----------"); }
// v3 : 整体深复制 public static void V3() { // First version WeeklyLog log = new WeeklyLog(); log.attachmentList.Add(new Attachment() { Name = "工作总结20170426-20170501_Victor.xlsx" }); // Second version WeeklyLog log2 = log.Clone() as WeeklyLog; // Compare 2 object Console.WriteLine("周报是否相同:{0}", object.ReferenceEquals(log, log2)); // Compare 2 attachment Console.WriteLine("附件是否相同:{0}", object.ReferenceEquals(log.attachmentList[0], log2.attachmentList[0])); }
public static void V1() { // First version WeeklyLog log = new WeeklyLog(); log.Name = "Victor"; log.Date = "第11周"; log.Content = "这周工作太忙,每天都在加班!~~~~(>_<)~~~~"; PrintWeeklyLog(log); // Second version based on First version WeeklyLog log2 = log.Clone() as WeeklyLog; log2.Date = "第12周"; PrintWeeklyLog(log2); // Third version based on First version WeeklyLog log3 = log.Clone() as WeeklyLog; log3.Date = "第13周"; PrintWeeklyLog(log3); }