MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用
程序员文章站
2022-11-25 20:17:40
索引: 目录索引 一.API 列表 .DeepClone() 用于 Model / Entity / ... ... 等引用类型对象的深度克隆 特性说明 1.不需要对对象做任何特殊处理,直接 .DeepClone() 即可得到该对象的深度克隆 2.不受对象层次深度限制,均可实现深度克隆(下面会给出几 ......
索引:
一.api 列表
.deepclone()
用于 model / entity / ... ... 等引用类型对象的深度克隆
特性说明
1.不需要对对象做任何特殊处理,直接 .deepclone() 即可得到该对象的深度克隆
2.不受对象层次深度限制,均可实现深度克隆(下面会给出几个简单示例 ... ...)
二.api 使用
1.命名空间,只需:
1 using mydal.modeltools;
2.被深度克隆的对象只需是一个 class ,如下:
1 public class modelentity 2 { 3 public int valuefield { get; set; } 4 5 public string referencefield { get; set; } 6 7 public modelentity objectfield { get; set; } 8 }
3.深度克隆 / 深度复制 示例
1 // 对象准备 2 var obj = new modelentity 3 { 4 valuefield = 10, 5 referencefield = "源值10", 6 objectfield = new modelentity 7 { 8 valuefield = 11, 9 referencefield = "源值11", 10 objectfield = new modelentity 11 { 12 valuefield = 12, 13 referencefield = "源值12" 14 } 15 } 16 }; 17 18 // 深度克隆 19 var cloneobj = obj.deepclone(); 20 21 // 源对象 值展示 22 console.writeline(obj.valuefield); // 10 23 console.writeline(obj.referencefield); // 源值10 24 console.writeline(obj.objectfield.valuefield); // 11 25 console.writeline(obj.objectfield.referencefield); // 源值11 26 console.writeline(obj.objectfield.objectfield.valuefield); // 12 27 console.writeline(obj.objectfield.objectfield.referencefield); // 源值12 28 29 // 克隆对象 值展示 30 console.writeline(cloneobj.valuefield); // 10 31 console.writeline(cloneobj.referencefield); // 源值10 32 console.writeline(cloneobj.objectfield.valuefield); // 11 33 console.writeline(cloneobj.objectfield.referencefield); // 源值11 34 console.writeline(cloneobj.objectfield.objectfield.valuefield); // 12 35 console.writeline(cloneobj.objectfield.objectfield.referencefield); // 源值12 36 37 // 变更 克隆对象 的值 38 cloneobj.referencefield = "新值10"; 39 cloneobj.objectfield.referencefield = "新值11"; 40 cloneobj.objectfield.objectfield.referencefield = "新值12"; 41 42 // 源对象 值展示 43 console.writeline(obj.valuefield); // 10 44 console.writeline(obj.referencefield); // 源值10 45 console.writeline(obj.objectfield.valuefield); // 11 46 console.writeline(obj.objectfield.referencefield); // 源值11 47 console.writeline(obj.objectfield.objectfield.valuefield); // 12 48 console.writeline(obj.objectfield.objectfield.referencefield); // 源值12 49 50 // 克隆对象 值展示 51 console.writeline(cloneobj.valuefield); // 10 52 console.writeline(cloneobj.referencefield); // 新值10 53 console.writeline(cloneobj.objectfield.valuefield); // 11 54 console.writeline(cloneobj.objectfield.referencefield); // 新值11 55 console.writeline(cloneobj.objectfield.objectfield.valuefield); // 12 56 console.writeline(cloneobj.objectfield.objectfield.referencefield); // 新值12
蒙
2019-03-09 15:22 周六