91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VB.NET中怎么實現對象克隆

發布時間:2021-07-12 09:46:36 來源:億速云 閱讀:363 作者:Leah 欄目:編程語言

VB.NET中怎么實現對象克隆,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

在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中怎么實現對象克隆問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麟游县| 双流县| 宁化县| 沂水县| 曲沃县| 嘉鱼县| 南雄市| 盖州市| 黄龙县| 聂荣县| 乌鲁木齐县| 甘南县| 洛宁县| 宣化县| 来凤县| 武乡县| 手游| 南昌县| 喀什市| 会宁县| 抚远县| 同江市| 南康市| 丹巴县| 肇东市| 合阳县| 乐清市| 新疆| 招远市| 漳州市| 无锡市| 长治市| 固阳县| 柘荣县| 纳雍县| 清远市| 灵石县| 阿拉善右旗| 文登市| 乐都县| 西华县|