使用ICloneable接口来支持深度复制

ZDNet软件频道 时间:2003-08-18 作者:ZDNet China |  我要评论()
本文关键词:vbtips
很多基于对象的应用程序需要具有向你提供创建对象复件的能力。例如,你可能需要为一个自定义的对象创建复件。为实现这个目的,VB.NET在System.ICloneable里提供了一个标准的接口。
本文译自Builder.com,未经许可请勿转载 很多基于对象的应用程序需要具有向你提供创建对象复件的能力。例如,你可能需要为一个自定义的对象创建复件。但是,你不能只是简单地通过将对象分配给新的变量来复制一个对象,因为这样就有两个变量指向同一个对象(这也叫做镜像复件,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这个方法为对象创建了一个新的实例,并将其属性的值按照当前对象的值来设置,再将其返回。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134