欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-26 23:47:44
索引: 目录索引 一.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 周六