zoukankan      html  css  js  c++  java
  • (原创)c#学习笔记09--定义类08--浅度和深度复制

    9.8  浅度和深度复制

      从一个变量到另一个变量按值复制对象,而不是按引用复制对象(即以与结构相同的方式复制)可能非常复杂。因为一个对象可能包含许多其他对象的引用,例如,字段成员等,这将涉及许多繁琐的操作。把每个成员从一个对象复制到另一个对象中可能不会成功,因为其中一些成员可能是引用类型。

      .NET Framework 考虑了这个问题。简单地按照成员复制对象可以通过派生于System.Object的MemberwiseClone()方法来完成,这是一个受保护的方法,但很容易在对象上定义一个调用该方法的公共方法。这个方法提供的复制功能称为浅度复制(shallow copy),因为它没有考虑引用类型成员。因此,新对象中的引用成员就会指向与源对象中相同成员的对象,在许多情况下这并不理想。如果要创建成员的新实例(复制值,而不复制引用),此时需要使用深度复制(deep copy)。

      可以实现一个 ICloneable 接口,以标准的方式来进行。如果使用这个接口,就必须实现它包含的Clone()方法。这个方法返回一个类型为System.Object的值. 我们可以采用各种处理方式,执行所选的任何一个方法体得到这个对象。如果愿意,就可以进行深度复制(但执行过程不是必选的,所以可以按照需要执行浅度复制)。详见第11章。

  • 相关阅读:
    接口(interface)的使用于注意事项
    构造方法
    MySQL数据库软件
    final与static的作用
    区分like和in
    list,set,map各有什么异同?
    简述 Overload 与 Override
    标识符的基础知识
    类的继承关系
    MySQL常见索引失效
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/4956160.html
Copyright © 2011-2022 走看看