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

哪些公司可以做网站手机网站排名优化

哪些公司可以做网站,手机网站排名优化,南宁两学一做党课网站,做机械设备网站C#开发常见面试题三(浅复制和深复制的区别) 一.浅复制和深复制定义 (1)浅复制:复制一个对象的时候,仅仅复制原始对象中所有的非静态类型成员和所有的引用类型成员的引用。(新对象和原对象将共享所有引用类型成员的实…

C#开发常见面试题三(浅复制和深复制的区别)

一.浅复制和深复制定义

(1)浅复制:复制一个对象的时候,仅仅复制原始对象中所有的非静态类型成员和所有的引用类型成员的引用。(新对象和原对象将共享所有引用类型成员的实际对象)

(2)深复制:复制一个对象的时候,不仅复制所有非静态类型成员,还要复制所有引用类型成员的实际对象

在.NET中,基类System.Object已经为所有类型都实现了浅复制,类型所要做的就是公开一个复制的接口,而通常的,这个接口会由ICloneable接口来实现。ICloneable只包含一个方法Clone,该方法既可以被实现为浅复制也可以被实现为深复制,具体如何取舍则根据具体类型的需求决定。此外,在Sys-tem.Object基类中,有一个保护的MemeberwiseClone()方法,它便用于进行浅度复制。

二.代码理解

    public object Clone(){    return MemberwiseClone();}

实例

    public class DeepCopy : ICloneable{public int i = 0;public A a = new A();public object Clone(){// 实现深复制-方式1:依次赋值和实例化DeepCopy newObj = new DeepCopy();newObj.a = new A();newObj.a.message = this.a.message;newObj.i = this.i;return newObj;}public new object MemberwiseClone(){// 实现浅复制return base.MemberwiseClone();}public override string ToString(){string result = string.Format("I的值为{0},A为{1}", this.i.ToString(), this.a.message);return result;}}public class A{public string message = "我是原始A";}public class Program{static void Main(string[] args){DeepCopy dc = new DeepCopy();dc.i = 10;dc.a = new A();DeepCopy deepClone = dc.Clone() as DeepCopy;DeepCopy shadowClone = dc.MemberwiseClone() as DeepCopy;// 深复制的目标对象将拥有自己的引用类型成员对象deepClone.a.message = "我是深复制的A";Console.WriteLine(dc);Console.WriteLine(deepClone);Console.WriteLine();// 浅复制的目标对象将和原始对象共享引用类型成员对象shadowClone.a.message = "我是浅复制的A";Console.WriteLine(dc);Console.WriteLine(shadowClone);Console.ReadKey();}}

执行结果

三.如何实现深复制

1.逐个复制

2.序列化实现深复制

    [Serializable]public class DeepCopy : ICloneable{......public object Clone(){// 实现深复制-方式1:依次赋值和实例化//DeepCopy newObj = new DeepCopy();//newObj.a = new A();//newObj.a.message = this.a.message;//newObj.i = this.i;//return newObj;// 实现深复制-方式2:序列化/反序列化BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, this); ms.Position = 0; return bf.Deserialize(ms);}......}[Serializable]public class A{public string message = "我是原始A";}

PS:一般可被继承的类型应该避免实现ICloneable接口,因为这样做将强制所有的子类型都需要实现ICloneable接口,否则将使类型的深复制不能覆盖子类的新成员。


复习一下基础知识。

http://www.dt0577.cn/news/15542.html

相关文章:

  • 有创意的食品包装设计网站在线优化检测
  • 设计师接私单网页优化方法
  • 高淳做网站价格百度下载app下载安装到手机
  • 理县网站建设本地推荐本地推荐
  • 新手怎样做网站本地推广最好用的平台
  • 湖北省市政工程建设网站腾讯企点下载
  • 做网站使网页不居中兰州网络优化seo
  • 北京网站建设找降龙中国十大企业管理培训机构
  • 深圳网站建设公司哪家比较好什么软件可以免费引流
  • 单位建设网站申请网站宣传的方法有哪些
  • wordpress只备份数据seo怎么弄
  • 开天猫店需要什么条件多少钱谷歌seo外包
  • 网站开发进度安排文档seo外包公司优化
  • 政府网站发展指引建设规范想建立自己的网站怎么建立
  • 想招代理去什么网站如何在手机上开自己的网站
  • 南京网站开发公司衡阳seo优化
  • 10个免费网站建网站需要什么
  • 网站开发客户的思路总结舆情网站
  • 北京响应式网站建设报价seo网络排名优化
  • 预约型网站模板源码百度营销大学
  • 做外贸公司网站安卓优化
  • 做淘宝客的网站怎么备案谷歌seo外包公司哪家好
  • 科学家做实验的网站网络营销推广系统
  • 南京酒店网站制作网络整合营销推广
  • 佳木斯 两学一做 网站站长工具流量统计
  • 无锡公司网站设计百度seo效果怎么样
  • 公司做网站 微信平台注册域名要钱吗
  • 用户体验较好的网站搜索引擎优化是指什么
  • 汕头百度网站建设如何自创网站
  • 六安网站排名优化电话太原做推广营销