VB.net序列化和反序列化的使用方法和實用場景

引言

相信很多初學編程的人都會提出過這個疑問:“既然我的變量可以存在內存之中,那么是否也可以存在硬盤之中呢”

其實我想回答的是,完全可以而且方法不止一種,而今天講的是序列化最經典的——二進制序列化

由于序列化的部分已經被新的.net棄用了,但是你只要明確一點,棄用不代表不可以用,以下是教學步驟

1、編寫類型,或者是結構或者是一個變量

在存儲單個.net變量時,一般都是被.NET程序員標記為可序列化的,然而自己寫的類的變量則需要在類的頭上加上這么一句話

<Serializable>

否則你將會看到這種情況

2、實操一下(序列化)

Imports System.IO
Imports System.Runtime.Serialization.Formatters.BinaryModule Module1Sub Main()DoDim a As String = "qwert"Dim b As New Class1Select Case Console.ReadLine()Case 1Dim fs = New FileStream("J:\桌面文件\a.bin", FileMode.Create)Dim bf = New BinaryFormatterbf.Serialize(fs, a)fs.Close()Case 2Dim fs = New FileStream("J:\桌面文件\b.bin", FileMode.Create)Dim bf = New BinaryFormatterbf.Serialize(fs, b)fs.Close()End SelectLoopEnd SubEnd Module
<Serializable>
Class Class1Dim a As String = "asd"Dim b As String = "dfg"
End Class

但是,請你注意,如果你是WinForm的開發者你將會面臨一個新的問題:

翻譯過來就是已經被棄用了,需要加一個標簽來阻止報錯?#Disable Warning SYSLIB0011

即(示例代碼,被標記后的代碼都會隱藏此報錯代碼的錯誤)

#Disable Warning SYSLIB0011Public Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.ClickDim fs = New FileStream(Application.StartupPath & "\Layer.bin", FileMode.Create)Dim bf = New BinaryFormatterbf.Serialize(fs, Layers)fs.Close()End SubPublic Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.ClickDim fs = New FileStream(Application.StartupPath & "\Layer.bin", FileMode.Open)Dim bf = New BinaryFormatterDim l = bf.Deserialize(fs)Layers = lreLoad()fs.Close()End Sub

很好,此時你的變量已經被存在桌面了

3、打開(反序列化)

和序列化一樣,非常簡單

Imports System.IO
Imports System.Runtime.Serialization.Formatters.BinaryModule Module1Sub Main()DoDim a As String = "qwert"Dim b As New Class1Select Case Console.ReadLine()Case 1'''               Case 2'''Case 3Dim fs = New FileStream("J:\桌面文件\a.bin", FileMode.Open)Dim bf = New BinaryFormatterDim a1 = bf.Deserialize(fs)Console.WriteLine(a1)fs.Close()Case 4Dim fs = New FileStream("J:\桌面文件\b.bin", FileMode.Open)Dim bf = New BinaryFormatterDim b1 = bf.Deserialize(fs)Console.WriteLine(b1)fs.Close()End SelectLoopEnd SubEnd Module
<Serializable>
Class Class1Dim a As String = "asd"Dim b As String = "dfg"
End Class

輸入2后,輸入4的結果(由于并沒有對class1做內部值的提取,故返回類名)

?

4、應用場景

1、在游戲

角色的位置,角色的狀態,物體的狀態都可以通過序列化來保存,方便第二次登錄時的讀取,唯一不方便的是后期數據出錯維護起來麻煩(程序員可以編寫對應類型的編輯器程序來維護這些可能出錯的文件)

2、Socket網絡編程

在進行.net的網絡通信中,一個一個字節頭文件識別起來非常麻煩,而且出錯幾率極高,而直接使用序列化后的文件傳輸將會大大減少編程難度和出錯幾率

3、對于特定類型文件的存儲

例如我開發了一個CAD交互系統,我想存儲所有的CAD變量,那么最簡單的就是直接把自己編寫的CAD類存在用戶的計算機內,方便下一次修改和使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79378.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android OTA

一、OTA運行原理 Android 平臺提供 Google diff arithmetic 差分機制&#xff0c;升級包支持完整升級以及差分升級&#xff0c;OTA 運行原理圖如下所示。 1. OTA Server 負責對更新包進行上傳&#xff0c;下載以及版本的管理。 2. 開發者在修改 Android 系統后&#xff0c;通…

Untiy基礎學習(三)Untiy中編寫腳本的基本規則

一、怎么創建腳本 在Project窗口下&#xff0c;右鍵Create C#Script 即可創建腳本 創建腳本的注意事項 &#xff1a; 1&#xff09;類名和文件名必須一致,不然不能掛載&#xff08;因為反射機制創建對象&#xff0c;會通過文件名去找Type&#xff09; 2&#xff09;沒有特殊需…

VBA宏即根據第一列的內容和第二列的數字,按照數字數量生成對應內容并依次放在第三列、第四列等

打開你的 Excel 工作表。按下 Alt F11 組合鍵&#xff0c;打開 VBA 編輯器。在 VBA 編輯器中&#xff0c;點擊 插入 -> 模塊。在模塊窗口中&#xff0c;輸入以下 VBA 代碼&#xff1a; Sub GenerateItems()Dim lastRow As LongDim i As Long, j As LongDim item As String…

深度學習系統學習系列【1】之基本知識

文章目錄 說明基礎知識人工智能、機器學習、深度學習的關系機器學習傳統機器學習的缺陷選擇深度學習的原因深度學習的關鍵問題深度學習的應用深度學習的加速硬件GPU環境搭建主流深度學習框架對比 說明 文章屬于個人學習筆記內容&#xff0c;僅供學習和交流。內容參考深度學習原…

論文筆記-基于多層感知器(MLP)的多變量橋式起重機自適應安全制動與距離預測

《IET Cyber-Systems and Robotics》出版山東大學 Tenglong Zhang 和 Guoliang Liu 團隊的研究成果&#xff0c;文章題為“Adaptive Safe Braking and Distance Prediction for Overhead Cranes With Multivariation Using MLP”。 摘要 橋式起重機的緊急制動及其制動距離預測是…

DeepSeek實戰--各版本對比

1.對比 版本參數量優勢劣勢使用場景競品DeepSeek-V36710億&#xff08;MoE架構&#xff0c;激活370億&#xff09;開源、高效推理&#xff08;60 TPS&#xff09;、低成本&#xff08;API費用低&#xff09;、中文處理能力突出&#xff08;90%準確率多模態能力有限通用任務&am…

從0開始建立Github個人博客(hugoPaperMod)

從0開始建立Github個人博客(hugo&PaperMod) github提供給每個用戶一個網址&#xff0c;用戶可以建立自己的靜態網站。 一、Hugo hugo是一個快速搭建網站的工具&#xff0c;由go語言編寫。 1.安裝hugo 到hugo的github標簽頁Tags gohugoio/hugo選擇一個版本&#xff0c…

【AI論文】WebThinker:賦予大型推理模型深度研究能力

摘要&#xff1a;大型推理模型&#xff08;LRMs&#xff09;&#xff0c;如OpenAI-o1和DeepSeek-R1&#xff0c;展示了令人印象深刻的長期推理能力。 然而&#xff0c;他們對靜態內部知識的依賴限制了他們在復雜的知識密集型任務上的表現&#xff0c;并阻礙了他們生成需要綜合各…

Linux_sudo命令的使用與機制

1、sudo命令的作用 sudo&#xff08;全稱 superuser do&#xff09;是 Linux/Unix 系統中權限管理的核心工具。 允許普通用戶在授權下以其他用戶&#xff08;默認是 root&#xff09;的權限執行命令&#xff0c;而無需直接登錄賬戶。 2、sudo命令的典型使用場景 sudo 覆蓋了系…

Scrapy框架之 中間件的使用

爬蟲中間件 特點&#xff1a;主要處理蜘蛛&#xff08;Spider&#xff09;和下載器&#xff08;Downloader&#xff09;之間的請求和響應。可以對蜘蛛生成的請求進行攔截、修改或過濾&#xff0c;也可以對下載器返回給蜘蛛的響應進行處理。適用場景&#xff1a; 請求過濾與修改…

供應鏈算法整理(一)--- 銷量預估

在供應鏈管理領域有較多的預估場景&#xff0c;例如送達時長預估、銷量預估、用電量預估。特別的在智能供應鏈領域&#xff0c;銷量和庫存的管理的智能化也依賴銷量預估&#xff0c;因此在本文我們整理了 銷量預估的算法詳細的技術方案。 時間序列預測在最近兩年內發生了巨大的…

第4篇:服務層抽象與復用邏輯

在業務系統復雜度指數級增長的今天&#xff0c;服務層&#xff08;Service Layer&#xff09;的合理設計直接影響著系統的可維護性和擴展性。本文將深入剖析 Egg.js 框架中的服務層架構設計&#xff0c;從基礎實現到高級封裝&#xff0c;全方位講解企業級應用的開發實踐。 一、…

Java學習手冊:Spring 數據訪問

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 類&#xff0c;它簡化了數據庫操作&#xff0c;提供了豐富的 API 來執行數據庫訪問任務。JdbcTemplate 可以自動處理數據庫連接的獲取、釋放&#xff0c;SQL 語句的執行&#xff0c;結果集的處理等…

遞歸、搜索和回溯算法《遞歸》

在之前的優選算法當中我們已經學習了一些基本的算法&#xff0c;那么接下來我們就要來學習算法當中的一大重要章節——遞歸、搜索和回溯算法&#xff0c;其實也就是大家常常聽到的dfs、bfs&#xff1b;其實本質就是遞歸&#xff0c;在學習搜索、回溯等算法的過程當中我們會先來…

Java進階--設計模式

設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式使代碼編制真正工程化&#xff0c;設計模式是軟件工程的基石&#xff0c;如同大廈的一塊塊磚石一樣&#xff0…

如何禁止AutoCAD這類軟件聯網

推薦二、三方法&#xff0c;對其他軟件影響最小 一、修改Hosts文件 Hosts文件是一個存儲域名與IP地址映射關系的文本文件&#xff0c;通過修改Hosts文件可以將AutoCAD的域名指向本地回環地址&#xff08;127.0.0.1&#xff09;&#xff0c;從而實現禁止聯網的目的。具體步驟如…

深度學習框架搭建(Vscode/Anaconda/CUDA/Pytroch)

目錄 ??????一 Vscode安裝 二、Anaconda安裝 三、更新顯卡驅動 四、安裝CUDA 五、安裝Pytorch 六、Vscode配置 七、出現的問題匯總 ??????一 Vscode安裝 在 Windows 上安裝 訪問 VS Code 官網 https://code.visualstudio.com/&#xff0c;點擊 "Downl…

結構模式識別理論與方法

我們在前文《模式識別的基本概念與理論體系》中就已經提及“模式分類”。 具體內容看我的CSDN文章&#xff1a;模式識別的基本概念與理論體系-CSDN博客 模式的識別方法主要有統計模式識別方法和結構模式識別方法兩大類。統計模式識別方法提出得較早&#xff0c;理論也較成熟…

12.多邊形的三角剖分 (Triangulation) : Fisk‘s proof

目錄 1.Fisks proof Trangulation Coloring Domination Pigeon-Hold Principle Generation 2.Orthogonal Polygons (正交多邊形) Necessity of floor(n4) Sufficiency by convex Quadrilateralization Generalization 1.Fisks proof Trangulation 引入內對角線&…

面經-計算機網絡——OSI七層模型與TCP/IP四層模型的對比詳解

OSI七層模型與TCP/IP四層模型的對比詳解 一、圖示解析&#xff1a;分層封裝結構 你提供的圖清晰展示了網絡通信中從應用層到物理層的封裝過程&#xff0c;每一層都會對上層的數據加上自己的頭部信息&#xff08;Header&#xff09;&#xff1a; 應用層&#xff1a; 應用…