VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 使用ICloneable接口来支持深度复制
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:8909, 日期:2003-08-29
    很多基于对象的应用程序需要具有向你提供创建对象复件的能力。例如,你可能需要为一个自定义的对象创建复件。但是,你不能只是简单地通过将对象分配给新的变量来复制一个对象,因为这样就有两个变量指向同一个对象(这也叫做镜像复件,shadow copy)。相反,你需要对对象进行深度复制(deep copy),也就是为它创建一个新的实例,并复制所有的属性。




为实现这个目的,Visual Basic .NET在System.ICloneable里提供了一个标准的接口。.NET框架里的很多对象都能够识别并使用ICloneable接口,从而进行对对象的深度复制。

下面的代码是实现ICloneable接口的一个例子:

Public Class CopyMe
    Implements ICloneable

    Private strValue = "Yes"

    Public Function Clone() As Object Implements _
            System.ICloneable.Clone
        Dim objCopy As CopyMe
        objCopy = New CopyMe()
        objCopy.Value = Me.Value

        Return objCopy
    End Function

    Public Property Value() As String
        Get
            Return strValue
        End Get
        Set(ByVal Value As String)
            strValue = Value
        End Set
    End Property
End Class

Clone这个方法为对象创建了一个新的实例,并将其属性的值按照当前对象的值来设置,再将其返回。