日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
VB.NET對(duì)象克隆的應(yīng)用法則

VB.NET編程語言的應(yīng)用范圍非常廣泛,比如在數(shù)據(jù)庫的連接方面,對(duì)于Excle的操作,對(duì)于界面的操作等等方面。我們?cè)谶@里會(huì)為大家介紹一下有關(guān)VB.NET對(duì)象克隆的實(shí)現(xiàn)方法,并對(duì)其實(shí)現(xiàn)的功能進(jìn)行一個(gè)初步的掌握。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的涇源網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

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

 
 
 
  1. Dim objA As New CResume 
  2. ‘Cresume是一個(gè)自定義的記錄簡(jiǎn)歷信息的類 

然后進(jìn)行初始化,比如:

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

這樣的話,objB跟objA有相同狀態(tài),值得注意的是objB改變一個(gè)Name,比如:

 
 
 
  1. objB.Name=”BBB” 

而實(shí)際上,objA的Name也變?yōu)椤癇BB”,理由很簡(jiǎn)單。它們指向同一塊內(nèi)存空間。#t#

下面我們重點(diǎn)討論對(duì)象的Clone問題,即Copy以后的各個(gè)對(duì)象互不影響,關(guān)鍵是如何采用簡(jiǎn)單的方法解決我們的問題,MemoryStream和BinFormatter配合一下可以很簡(jiǎn)單的把VB.NET對(duì)象克隆。

MemoryStream,我以前提到過,是支持存儲(chǔ)區(qū)為內(nèi)存的流。

BinFormatter,主要以二進(jìn)制形式序列化和反序列化對(duì)象。

主要思路:

先用BinFormatter的Serialize方法,把對(duì)象存儲(chǔ)在MemoryStream流中,(操作跟其他Stream一樣),然后Deserialize反序列化,得到一個(gè)流式的數(shù)據(jù),轉(zhuǎn)化為原來對(duì)象的類型就可以了。是不是很簡(jiǎn)單?呵呵??匆幌麓a再說:

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里面可以這樣調(diào)用

 
 
 
  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)  

總結(jié):主要調(diào)用了VB.NET的流和序列化技術(shù),使得VB.NET對(duì)象克隆免去了繁瑣的讀寫操作,也簡(jiǎn)化了代碼。


本文名稱:VB.NET對(duì)象克隆的應(yīng)用法則
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/cdihgpe.html