成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET對象克隆的應用法則

開發 后端
VB.NET對象克隆的實現在實際編程中是一個非常重要的作用。我們可以通過本文介紹的內容詳細對此進行一個了解,并掌握這一應用技巧。

VB.NET編程語言的應用范圍非常廣泛,比如在數據庫的連接方面,對于Excle的操作,對于界面的操作等等方面。我們在這里會為大家介紹一下有關VB.NET對象克隆的實現方法,并對其實現的功能進行一個初步的掌握。

在3DMAX里面,做好一個物體(父物體)以后,可以選擇Edit菜單中的Clone,下面有三中選項:Copy(生成一個同模樣的子物體,兩者的操作互不影響),Instance(父子互動,父物體的操作同樣影響子物體,子物體也一樣),還有一個Reference(暫不考慮)。

在VB.NET,同樣會碰到這樣的問題。創建一個復雜對象(可能有很多種不同的數據類型)的實例,進行了一系列操作之后,想讓一個中間變量或幾個(另外的實例)保存它的狀態,我們一般采取逐個變量賦值,有時候會寫很長的代碼:)這實際上就是上述的Copy問題。而對于Instance,很簡單,新建一個實例,指向一下就可以了:

 

  1. Dim objA As New CResume 
  2. ‘Cresume是一個自定義的記錄簡歷信息的類 

然后進行初始化,比如:

 

  1. objA.Name=”AAA”  
  2. objA.Address=”Shanghai,
    China”  
  3. ……  
  4. Dim objB As New CResume 
    ‘新建一個實例  
  5. objB=objA 

 

這樣的話,objB跟objA有相同狀態,值得注意的是objB改變一個Name,比如:

 

  1. objB.Name=”BBB” 

 

而實際上,objA的Name也變為“BBB”,理由很簡單。它們指向同一塊內存空間。#t#

 

下面我們重點討論對象的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. ‘注意類前面加上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) 
    ‘依然是AAA  
  9. Debug.WriteLine(Resume1.Address)  

 

 

總結:主要調用了VB.NET的流和序列化技術,使得VB.NET對象克隆免去了繁瑣的讀寫操作,也簡化了代碼。

責任編輯:曹凱 來源: CSDN
相關推薦

2010-01-19 18:45:25

VB.NET窗體嵌套

2010-01-22 13:28:13

VB.NET對象克隆

2009-10-09 15:59:41

VB.NET對象

2009-10-14 13:21:46

VB.NET Acco

2010-01-12 16:20:44

VB.NET類

2009-10-13 17:03:55

VB.NET面向對象

2009-11-02 16:22:16

VB.NET面向對象

2009-10-23 14:06:07

VB.NET類對象

2009-10-12 16:39:59

OracleTransVB.NET使用

2010-01-12 18:05:38

VB.NET對象

2009-10-30 11:20:54

VB.NET Proc

2010-01-21 18:35:56

VB.NET Impo

2010-07-06 15:54:30

VB.NET UDP

2009-11-02 15:57:36

VB.NET WEB

2010-01-07 15:25:11

VB.NET數組

2009-11-10 16:46:52

VB.NET指針應用

2009-10-26 10:44:27

VB.NET API函

2010-01-07 15:57:02

VB.NET ForEach

2009-10-22 10:10:20

VB.NET Proc

2009-10-13 14:19:03

VB.NET面向對象編
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99精品视频免费观看 | 久久不卡区 | 国产精品久久久久久久久久免费看 | 国产伦精品一区二区三区精品视频 | 在线 丝袜 欧美 日韩 制服 | 亚洲电影第三页 | 中国一级特黄真人毛片免费观看 | 久久国产精品99久久久大便 | 欧美激情一区二区三区 | 黄色毛片免费看 | 国产一区二区三区高清 | 亚洲精品久久久久中文字幕欢迎你 | 激情网五月天 | 国产精品久久久久久久久图文区 | 欧美精品一区二区在线观看 | 国产一区二区三区 | 成年人在线观看视频 | 中文字幕日韩欧美一区二区三区 | 91在线看视频 | 国产一区二区观看 | 精品粉嫩aⅴ一区二区三区四区 | www成人免费 | 久久国产精品-国产精品 | 男人久久天堂 | 日本午夜精品一区二区三区 | 91久久精品国产免费一区 | 国产精品久久久久久久久久久免费看 | 欧美黑人一区二区三区 | 在线看av的网址 | 欧美激情一区二区三区 | 欧洲av在线 | 三级黄视频在线观看 | 亚洲一区亚洲二区 | 国产精品久久久久久久7777 | 国产 欧美 日韩 一区 | 久久精品久久久 | 久久亚洲一区二区 | 99久久精品国产毛片 | 在线中文字幕av | 日韩在线观看 | 一区二区三区视频在线观看 |