首页 > 其他分享 >深拷贝和浅拷贝

深拷贝和浅拷贝

时间:2023-06-16 11:45:05浏览次数:33  
标签:对象 接口 实现 ICloneable 类型 拷贝

深拷贝和浅拷贝

  • 浅拷贝
    • 指拷贝原始对象中所有的非静态值类型和所有引用类型成员的引用(拷贝后的对象共享所有引用类型成员的实际对象
    • 类型基类System.Object已经为所有类型实现了浅拷贝,类型所要做的就是公开一个复制的接口,这个接口一般借由实现ICloneable接口来实现,ICloneable只包含了一个Clone方法,该方法即可以被实现为浅复制也可以被实现深拷贝
      img
    • 实现方式:
      1. 实现ICloneable接口来实现对象浅拷贝(MemberwiseClone)
        img
  • 深拷贝
    • 指拷贝一个对象时,当存在值类型时将对象里面的值类型拷贝,当存在引用类型时,不仅仅将对象的引用进行拷贝,还将该对象引用的值也一起拷贝(拷贝后的对象跟源对象完全互相独立
      img
    • 实现方式
      1. 自己手动new对象
        img
      2. 反射
        img
      3. 序列化和反序列化
        img
  • 效果:
    img
  • 注意:
    • 一般可被继承的类型应该避免实现ICloneable接口, 因为这样将强制所有的子类型都需要实现ICloneable接口,否则将使类型的拷贝不能覆盖子类的新成员
  • 链接:
    https://www.cnblogs.com/dotnet261010/p/12329220.html

标签:对象,接口,实现,ICloneable,类型,拷贝
From: https://www.cnblogs.com/blackamon/p/17485188.html

相关文章

  • 利用 inotifywait 实现自动增量文件拷贝
    #!/bin/bashsrc=/www/wwwroot/site0/images/dest=/www/wwwroot/site1/images/tool=/user/bin/mytoolinotifywait-mrq--format'%w%f'-ecreate$src|whilereadfiledosleep1#从create到写好,有一个过程,等一下更安全rpath=$dest/${file:2......
  • c#用表达式树实现深拷贝功能
    因为对表达式树有点兴趣,出于练手的目的,试着写了一个深拷贝的工具库。支持.netstandard2.0或.netframework4.5及以上。GitHub地址https://github.com/blurhkh/DeepCopiernuget地址https://www.nuget.org/packages/DeepCopier使用方法如下:首先创建几个测试用的类型pub......
  • 深浅拷贝、第三方模块的下载与安装、开发流程
    深浅拷贝详解1.对于不可变对象,深拷贝和浅拷贝的效果是一样的,因为不可变对象不需要在内存中复制2.对于可变对象,深拷贝和浅拷贝的效果是有区别的,主要原因在于可变对象自身的可变性质浅拷贝1.1使用数据类型本身的构造器list1=[1,2,3]list2=list(list1)print(list2)pri......
  • hfile通过bulkload拷贝到hbase方式---TODO待整理
      参考链接: http://www.ithao123.cn/content-101658.html hbase之bulkload的主要类LoadIncrementalHFiles  http://www.thinksaas.cn/group/topic/233674/ bulkload执行mv和cp的区别 使用LoadIncrementalHFiles装载HFILE到HBASE的一点心得  : 数据入HBASE一般有......
  • 多个文件拷贝到一个文件命令
    cp-rcssjsimgindex.htmlcolumn/ 选项作用-f 若目标文件已存在,则强行覆盖原文件-i 若目标文件已存在,则询问是否覆盖-p 保留源文件/目录的所有属性-r 递归复制文件和目录-d 当复制符号连接时,则目标文件也是符号连接,且与源符号链接指向相同-l 创建源文件的硬连......
  • 14.拷贝构造函数、静态、友元和预编译头
    拷贝构造函数静态友元预编译头拷贝构造函数eg:Playeer.h代码:#pragmaonceclassPlayeer{private:intnum;char*name;public:Playeer(intx,constchar*name);~Playeer();voiddisplay();//输出结果voidsetX(intx);//......
  • C ++ 拷贝构造函数和赋值构造函数 非常经典
    C++拷贝构造函数赋值构造函数拷贝构造函数和赋值构造函数的异同由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数......
  • Java NIO原理 (Selector、Channel、Buffer、零拷贝、IO多路复用)
    系列文章目录和关于我零丶背景最近有很多想学的,像netty的使用、原理源码,但是苦于自己对于操作系统和nio了解不多,有点无从下手,遂学习之。一丶网络io的过程上图粗略描述了网络io的过程,了解其中的拷贝过程有利于我们理解非阻塞io,以及IO多路复用的必要性。数据从网卡到内核缓......
  • 【Python查漏补缺(二)】正则表达式与深浅拷贝
    在开始正题之前讲一下打开文件的另一种方式。之前打开文件的方式f=open("文件路径","文件打开方式",encoding="utf8")模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开......
  • C++类构造函数、拷贝构造函数、复制构造函数、复制构造函数、构造函数显示调用和隐式
    一、构造函数是干什么的 1.2.{3.public:4.//类Counter的构造函数5.//特点:以类名作为函数名,无返回类型6.Counter()7.{8.0;9.}10.private:11.//数据成员12.intm_value;13.}      该类对......