文件名称:对象复制-python3+opencv3识别图片中的物体并截取的方法
文件大小:10.59MB
文件格式:PDF
更新时间:2024-07-30 07:08:51
.net之美 关键技术解析
1.3 对象复制 有的时候,创建一个对象可能会非常耗时,比如对象需要从远程数据库中获取数据来填 充,又或者创建对象需要读取硬盘文件。此时,如果已经有了一个对象,再创建新对象时, 可能会采用复制现有对象的方法,而不是重新建一个新的对象。本节就讨论如何进行对象的 复制。 1.3.1 浅度复制 浅度复制和深度复制是以如何复制对象的成员来区分的。对象的成员有可能是值类型, 有可能是引用类型。当对对象进行一个浅度复制的时候,对于值类型成员,会复制其本身 (值类型变量本身包含了所有数据,复制时进行按位复制);对于引用类型成员(注意它实 际只是一个对象引用,指向了堆上的对象实例),仅仅复制引用,而不在堆上重新创建对 象。因此,浅度复制结果就是:新对象的引用成员和复制对象的引用成员指向了同一个对 象。 继续上面的例子,如果想要进行复制的对象(RefLine)是这样定义的,(为了避免翻 看前面的代码,在这里把代码再贴过来): // 将要进行浅度复制的对象,注意为引用类型 public class RefLine { public RefPoint rPoint; public ValPoint vPoint; public Line(RefPoint rPoint,ValPoint vPoint){ this.rPoint = rPoint; this.vPoint = vPoint; } } // 定义一个引用类型成员 public class RefPoint { public int x; public RefPoint(int x) { this.x = x; } } // 定义一个值类型成员 public struct ValPoint { public int x; public ValPoint(int x) { this.x = x;