VB.NET中怎么实现对象克隆

VB.NET中怎么实现对象克隆,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元梅江做网站,已为上家服务,为梅江各地企业和个人服务,联系电话:13518219792

在3DMAX里面,做好一个物体(父物体)以后,可以选择Edit菜单中的Clone,下面有三中选项:Copy(生成一个同模样的子物体,两者的操作互不影响),Instance(父子互动,父物体的操作同样影响子物体,子物体也一样),还有一个Reference(暂不考虑)。

在VB.NET,同样会碰到这样的问题。创建一个复杂对象(可能有很多种不同的数据类型)的实例,进行了一系列操作之后,想让一个中间变量或几个(另外的实例)保存它的状态,我们一般采取逐个变量赋值,有时候会写很长的代码:)这实际上就是上述的Copy问题。而对于Instance,很简单,新建一个实例,指向一下就可以了:

Dim objA As New CResume ‘Cresume是一个自定义的记录简历信息的类

然后进行初始化,比如:

  1. objA.Name=”AAA”  

  2. objA.Address=”Shanghai,
    China”  

  3. ……  

  4. Dim objB As New CResume 
    ‘新建一个实例  

  5. objB=objA 

这样的话,objB跟objA有相同状态,值得注意的是objB改变一个Name,比如:

objB.Name=”BBB”

而实际上,objA的Name也变为“BBB”,理由很简单。它们指向同一块内存空间。

  • 如何正确实现VB.NET重载Windows控件

  • VB.NET调用DLL实现方法解析

  • VB.NET读写文本文件具体代码编写方式介绍

  • VB.NET对象存储各种方法简介

  • VB.NET集合存储内容解析

下面我们重点讨论对象的Clone问题,即Copy以后的各个对象互不影响,关键是如何采用简单的方法解决我们的问题,MemoryStream和BinFormatter配合一下可以很简单的把VB.NET对象克隆。

MemoryStream,我以前提到过,是支持存储区为内存的流。

BinFormatter,主要以二进制形式序列化和反序列化对象。

主要思路:

先用BinFormatter的Serialize方法,把对象存储在MemoryStream流中,(操作跟其他Stream一样),然后Deserialize反序列化,得到一个流式的数据,转化为原来对象的类型就可以了。是不是很简单?呵呵。看一下代码再说:

CResume类的代码:

  1. Imports System.IO  

  2.  

  3. Imports System.Runtime.
    Serialization.Formatters  

  4.  

  5. < Serializable()> Public 
    Class CResume   

  6. &lsquo;注意类前面加上Serializable()
    属性,否则不可以序列化  

  7. Dim m_Name As String '姓名  

  8. Dim m_Address As String '地址  

  9. Public Property Address() As String  

  10. Get  

  11. Return m_Address  

  12. End Get  

  13. Set(ByVal NewAddress As String)  

  14. m_Address = NewAddress 

  15. End Set  

  16. End Property  

  17. Public Property Name() As String  

  18. Get  

  19. Return m_Name  

  20. End Get  

  21. Set(ByVal NewName As String)  

  22. m_Name = NewName 

  23. End Set  

  24. End Property  

  25. Public Function Clone() As CResume  

  26. Dim BF As New Binary.BinaryFormatter()  

  27. Dim MS As New MemoryStream()  

  28. BF.Serialize(MS, Me)  

  29. MS.Position = 0 

  30. Return (CType(BF.Deserialize
    (MS), CResume))  

  31. End Function  

  32. End Class 

在Form里面可以这样调用

  1. Dim Resume1 As New CResume()  

  2. Dim Resume2 As New CResume()  

  3. Resume1.Name = "AAA" 

  4. Resume1.Address = "Shanghai,China" 

  5. Resume2 = Resume1.Clone()  

  6. Resume1.Name = "BBB" 

  7. Resume1.Address = "Beijing,China" 

  8. Debug.WriteLine(Resume1.Name) 
    &lsquo;依然是AAA  

  9. Debug.WriteLine(Resume1.Address)  

关于VB.NET中怎么实现对象克隆问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。

本文题目:VB.NET中怎么实现对象克隆
网页路径:https://www.cdcxhl.com/article26/pdhccg.html

成都网站建设公司_创新互联,为您提供移动网站建设面包屑导航全网营销推广用户体验关键词优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司