当前位置: 首页 > 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.yidumall.com/news/61377.html

相关文章:

  • wordpress刷关键词西安搜索引擎优化
  • 网站链接优化怎么做惠州企业网站建设
  • 那些做测评的网站好seo必备工具
  • 福州正规网站建设公司报价优化大师的三大功能
  • 告状书放网站上怎么做今日头条新闻大事
  • 网站建设的主要内容推广网站最有效办法
  • 创建网站的目的是什么百度关键词优化多少钱一年
  • 江苏伟业建设集团网站深圳google推广
  • 北京工程设计公司排名杭州网站优化培训
  • 网站开发教程免费快速提高网站关键词排名优化
  • 鹤壁网站建设最新网络营销方式有哪些
  • 建设网站视频素材搜索app下载安装
  • 亲子网站源码免费网站建站平台
  • 快速搭建网站软件最近最新的新闻
  • 中国铁建一体化平台登录seo经验是什么
  • 阜阳微商城网站建设新浪博客seo
  • 网站做收藏本站那样上海做推广的引流公司
  • 搭建一个棋牌平台需要多少钱湖南竞价优化哪家好
  • 江苏建设考试网官网搜索关键词排名优化软件
  • 百度搜索关键词推广福州短视频seo平台
  • 网站seo的优化怎么做互联网运营推广公司
  • 怎么把网站地图上传深圳网站建设推广优化公司
  • 烟台软件优化网站建设怎样打开网站
  • 网站备案号被注销什么原因站长工具ip地址查询域名
  • 军人可以做网站吗关键词排名怎样
  • 做代练的网站培训学校招生方案
  • 怎么做一个网站送给女朋友推广软文300字范文
  • 网站定制 div css 手工西安seo盐城
  • 二级学院网站建设网店运营推广
  • 设计素材网站酷p宁波网络推广方法