首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
免费注册一站通帐号,参与直播、论坛、下载、博客、网摘、评论,展现我的风采!
您现在的位置: 中国IT实验室 >> 桌面开发 >> VB.net >> 文章正文
VB.NET中对象的克隆
来源:百家编程  时间:2007-8-2

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

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

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

  然后进行初始化,比如:

    objA.Name=”AAA”

    objA.Address=”Shanghai,China”

    ……

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

    objB=objA

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

    objB.Name=”BBB”

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

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

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

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

  主要思路:

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

  CResume类的代码:

  Imports System.IO

  Imports System.Runtime.Serialization.Formatters

  <Serializable()> Public Class CResume  

‘注意类前面加上Serializable()属性,否则不可以序列化

 

  Dim m_Name As String         '姓名

  Dim m_Address As String         '地址

  Public Property Address() As String

[1] [2] 下一页  

【责编:Youping】

中国IT教育热线咨询

相关文章
多线程、Socket技术及委托技术的关系
用C#创建COM对象
VB.Net连接各种数据库的几种方法
浅析JSP开发中的对象和范围属性
VB.NET中的多窗体编程:升级到 .NET
用VB.NET定制Windows控件
JAVA中对象创建和初始化过程
VB.NET中监视文件夹的变化
推荐文章
· 用C#创建COM对象
· IT管理十大失误及其对策
· VC中利用MFC设计绘图程序初步
· JAVA中对象创建和初始化过程
· C语言中的位域的使用
· 浅谈Java桌面应用程序开发
· C#的前途如何?
· 几种VC++数据库开发技术的相对比较
 精彩友情推荐
·锐捷交换机报价
·锐捷交换机
·锐捷网络网络交换机
·smc交换机
·smc交换机报价
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·Visual Basic 9.0隐式类型的局部…09-30
·JMX+J2SE5.0实现Web应用的安全管…09-30
·多线程、Socket技术及委托技术的…09-21
·Visual C#多线程参数传递浅析09-21
·浅谈Java中利用JCOM实现仿Excel编…09-21
·基于Java的界面布局DSL的设计与实…09-21
·Java开发中的事件驱动模型实例详…09-21
·并发工程原则应用到软件项目中09-06
·Delphi初学者应小心的六大陷阱09-06
·VC开发多语言界面支持的简单方法09-06
·用C#创建COM对象09-06
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05
  培训中心