当前位置: 首页 > news >正文

中国代理网官方网站广告设计与制作培训学校

中国代理网官方网站,广告设计与制作培训学校,创建网页文件,网站建设公司盈利分析文章目录 一、前言二、Object.MemberwiseClone方法1 定义2 示例3 备注 三、总结 一、前言 按照MSDN文档的章节顺序来#xff0c;本文应该是第五节。 但是学了上一节 Finalize之后#xff0c;发现其内容对实际开发帮助不大。 所以这次跳过了前面的GetHashCode、GetType章节本文应该是第五节。 但是学了上一节 Finalize之后发现其内容对实际开发帮助不大。 所以这次跳过了前面的GetHashCode、GetType章节直接来到MemberwiseClone。因为拷贝操作相对来讲还是比较常用的。 二、Object.MemberwiseClone方法 1 定义 名称空间System 程序集System.Runtime.dll 创建一个当前对象的浅拷贝shallow copy副本。 // 返回值 Object 当前对象的一个浅拷贝 protected object MemberwiseClone();注意 关于浅拷贝这个词既可以做名词也可以做动词作名词指一份浅拷贝的副本浅拷贝操作后生成的对象作动词就是指浅拷贝操作。 2 示例 以下示例说明了 MemberwiseClone 方法。它定义了一个 ShallowCopy 方法该方法调用 MemberwiseClone 方法对 Person 对象执行浅拷贝操作。它还定义了一个 DeepCopy 方法用于对 Person 对象执行深拷贝操作。 using System;public class IdInfo {public int IdNumber;public IdInfo(int IdNumber){this.IdNumber IdNumber;} }public class Person {public int Age;public string Name;public IdInfo IdInfo;public Person ShallowCopy(){return (Person) this.MemberwiseClone();}public Person DeepCopy(){Person other (Person) this.MemberwiseClone();other.IdInfo new IdInfo(IdInfo.IdNumber);other.Name String.Copy(Name);return other;} }public class Example {public static void Main(){// 创建一个Person实例并给它的字段分配一个值Person p1 new Person();p1.Age 42;p1.Name Sam;p1.IdInfo new IdInfo(6565);// 执行一次p1的浅拷贝将结果给p2Person p2 p1.ShallowCopy();// 显示p1、p2的值Console.WriteLine(Original values of p1 and p2:);Console.WriteLine(p1 instance values:);DisplayValues(p1);Console.WriteLine(p2 instance values:);DisplayValues(p2);// 修改p1属性值并显示p1、p2的值p1.Age 32;p1.Name Frank;p1.IdInfo.IdNumber 7878;Console.WriteLine(\nValues of p1 and p2 after changes to p1:);Console.WriteLine(p1 instance values:);DisplayValues(p1);Console.WriteLine(p2 instance values:);DisplayValues(p2);// 对p1做深拷贝且结果分配给p3Person p3 p1.DeepCopy();// 修改p1的成员值并展示深拷贝的结果p1.Name George;p1.Age 39;p1.IdInfo.IdNumber 8641;Console.WriteLine(\nValues of p1 and p3 after changes to p1:);Console.WriteLine(p1 instance values:);DisplayValues(p1);Console.WriteLine(p3 instance values:);DisplayValues(p3);}public static void DisplayValues(Person p){Console.WriteLine(Name:{0:s}, Age:{1:d}, p.Name, p.Age);Console.WriteLine(Value:{0:d}, p.IdInfo.IdNumber);} }// 示例输出如下 // Original values of p1 and p2: // p1 instance values: // Name:Sam, Age:42 // Value:6565 // p2 instance values: // Name:Sam, Age:42 // Value:6565// Values of p1 and p2 after changes to p1: // p1 instance values: // Name:Frank, Age:32 // Value:7878 // p2 instance values: // Name:Sam, Age:42 // Value:7878// Values of p1 and p3 after changes to p1: // p1 instance values: // Name:George, Age:39 // Value:8641 // p3 instance values: // Name:Frank, Age:32 // Value:7878该例中Person.IdInfo 属性返回一个 IdInfo 对象。如示例输出所示调用 MemberwiseClone 方法克隆 Person 对象时克隆的 Person 对象是原对象的独立备份除了它们共享同一个 Person.IdInfo 对象引用外。因此修改克隆对象的 Person.IdInfo 属性会更改原对象的 Person.IdInfo 属性。另一方面当执行深拷贝操作时修改克隆的 Person 对象包括其 Person.IdInfo 属性都不会影响到原对象。 3 备注 MemberwiseClone 方法通过创建一个新对象来创建浅拷贝然后将当前对象的 非静态字段nonstatic field拷贝到新对象。若字段是值类型则对该字段执行逐位复制bit-by-bit copy。若字段是引用类型则引用会被复制但引用的对象不会被复制因此原对象和其克隆引用的是同一个对象。 举个例子 考虑一个名为X的对象它引用了对象 A 和 B对象 B 引用对象 C 。 X的浅拷贝创建了一个新对象X2该对象也引用了对象 A 和 B 。 X的深拷贝创建了一个新对象X2该对象引用新对象 A2 和 B2它们是 A 和 B 的副本副本意味着内容相同但不是同一份一式两份依次引用了新对象 C2C2 是 C 的副本。 该示例说明了浅拷贝与深拷贝操作之间的区别。 若 MemberwiseClone 方法执行的浅拷贝方法未能满足你的需求有多种方法可以实现深拷贝操作。它们包括 调用要复制的对象的类构造函数用从第一个对象获取的属性值来创建第二个对象。这里假设对象的值完全由其类构造函数定义。调用 MemberwiseClone 方法创建对象的浅拷贝然后以原对象相同的值分配给新对象中的引用类型字段和属性。示例中的 DeepCopy 方法演示的就是该方式。将深拷贝的对象序列化然后将序列化后的数据恢复到不同的对象变量中。使用反射和递归来执行深拷贝操作。 序列化和反射的方法涉及其它技术有需要时另开一篇文详解。 三、总结 这节在概念上很简单 MemberwiseClone只复制对象并返回对副本的一个引用。浅拷贝是复制了类中所有值类型若类包含引用类型的字段或属性就只复制引用而不复制引用的对象。深拷贝除了复制类中值类型还会对引用类型做特殊处理对其引用的对象创建副本并赋予原对象中相同的值。
http://www.hkea.cn/news/14526489/

相关文章:

  • 建设网站说只给前端源码是什么意思商业机构的网站是什么
  • 郑州网站建设出名吗网页建站总结报告
  • 如何在社交网站上做视频推广方案万远翔网站建设
  • myeclipse网站开发淘宝买网站开发不行吗
  • 陕西渭南住房和城乡建设厅网站seo网站策划书
  • 凡科做网站行吗怎样开电商平台
  • 北京网站维护wordpress上传到哪里
  • 做淘宝网站要求与想法wordpress必须安装php
  • 中山币做网站公司公路局网站建设方案
  • 上海三凯建设管理咨询有限公司网站网站专题报道怎么做
  • 商丘网站建设专业现状该产品在英文站及多语言网站
  • 网站建设怎么制作模板个人网站策划书模板
  • 凡科网站怎么做没钱怎么做网站
  • 好用建站模板成功营销网站
  • 济南 论坛网站建设网站搭建 成都
  • 网站建设和美工珠海市官网网站建设价格
  • 招商网站建设大概多少钱浙江短视频seo优化网站
  • 非凡网站建设做游戏网站的需求分析
  • 北京手机网站设计建设网站需要造价
  • 公司网站做么做百度排名建设网站要求和注意事项
  • 常州优化网站建设企业网站下载
  • 给几个能看的网站 贴吧网站首页模板管理
  • 汕头电商网站建设个人网站seo入门
  • 使用wordpress的网站ps做字幕模板下载网站有哪些
  • 京东网站建设吗做站群的网站要备案吗
  • 汇邦团建网站谁做的国外做的比较好的网站
  • 网站建设学习 服务器做网站要好多钱
  • 优衣库网站建设的目的医院网站建设公司价格
  • 华为企业网站建设需求分析中国招标网官网首页
  • 做网站教程 第一课网站服务器租用怎么购买