C 初學者教程系列23 序列化和反序列化

2021-10-12 03:08:44 字數 2095 閱讀 3247

本文環境為visual studio 2019。

每當必須將與物件有關的資料從乙個應用程式傳送到另乙個應用程式時,就會使用序列化和反序列化。序列化用於將應用程式資料匯出到檔案中。然後,目標應用程式使用反序列化從應用程式中提取資料以供進一步使用。

序列化是將c#類物件寫入或序列化到檔案的概念。假設您有乙個名為「家庭」的c#類。該類具有「名稱」和「人數」2個屬性。

序列化可用於直接將「家庭」類的資料屬性寫入檔案。反序列化用於從檔案讀取資料並再次構造還原出「家庭」物件。

讓我們看乙個如何實現此目標的示例。

在我們的示例中,我們將在**中執行以下步驟:

建立乙個名為「家庭」的類,它具有2個屬性,即「名稱」和「人數」。

然後,我們將從類中建立乙個物件,並將「名稱」屬性的值分配為「我的五口之家」,並將「 人數」屬性的值設為5。

然後,我們將使用序列化將上述物件序列化為乙個名為「家庭.txt」的檔案

最後,我們將使用反序列化從檔案反序列化物件,並在控制台中顯示值。

在控制台應用程式的program.cs檔案中輸入以下**。

**說明:

需要序列化的類需要具有[serializable]屬性。這是c#中的關鍵字。我們將此關鍵字新增到「家庭」類。如果不標記此屬性,則在嘗試序列化類時會出現錯誤。

接下來是將要序列化的類的定義。在這裡,我們定義了乙個名為「家庭」的類,並提供2個屬性,乙個是「 名稱」,另乙個是「 人口」。

**說明:

首先,我們建立「家庭」類的物件。然後,將值「 我的五口之家」分配給名稱屬性,將「5」分配給人口屬性。

然後,我們使用格式化程式類,該類用於將物件序列化或轉換為二進位制格式。序列化檔案中的資料是以二進位制格式完成的。接下來,我們建立乙個檔案流物件。檔案流物件用於開啟檔案「家庭.txt」以供寫入。關鍵字filemode.create和filemode.write用於專門建立和寫入的檔案。

最後,我們使用serialize方法將二進位制資料傳輸到檔案。由於寫操作已完成,因此我們將關閉流。

這麼做是為了驗證一下,我們的序列化操作是否成功。

**說明:

我們建立物件「 stream」以唯讀模式開啟檔案「家庭.txt」。

然後,我們使用序列化程式類,該類用於反序列化物件。返回的物件設定為obj。

最後,我們在控制台中列印輸出「名稱」和「人口」屬性。

編寫上面的**,並使用visual studio執行該專案時,您將獲得以下輸出。

public class 家庭

public int 人口 }}

通常,我們程式設計,將會使用第3方的newtonsoft,您可以在nuget中搜尋,如下圖:

這是由於newtonsoft具有比c#類庫提供的序列化更高的效能以及更好的使用性。

祝您用餐愉快。

python教程系列(三 6 序列化)

我們把物件 變數 從記憶體中變成可儲存或傳輸的過程稱之為序列化,在python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是乙個意思。1 持久儲存狀態 需知乙個軟體 程式的執行就在處理一系列狀態的變化,在程式語言中,狀態...

C 基礎學習08(序列化和反序列化)

1.引用命名空間 using system.runtime.serialization.formatters.binary 引入命名空間2.類必須是可序列化的 serializable 使此類可序列化 public class person set private string gender pub...

C 學習筆記25 序列化和反序列化

序列化 serialization 是將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程,序列把物件轉換成有序位元組流,以便在網路上傳輸或者儲存在本地檔案中 序列化的主要目的有三個 1 以某種儲存形式使自定義物件持久化 2 將物件從乙個地方傳遞到另乙個地方 3 使程式更具維護。對於需要序列化的物件,需...