当前位置: 移动技术网 > IT编程>开发语言>.net > MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用

MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用

2019年03月10日  | 移动技术网IT编程  | 我要评论

奔向你简谱,十二影城12yc,中大逸仙时空bbs

索引:

一.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 周六

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网