欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)對(duì)象序列化的3種方案小結(jié)

 更新時(shí)間:2025年01月21日 10:22:52   作者:上位機(jī)付工  
在上位機(jī)開發(fā)過(guò)程中,我們可能經(jīng)常要實(shí)現(xiàn)一個(gè)數(shù)據(jù)對(duì)象的持久化,本文主要介紹了C#實(shí)現(xiàn)對(duì)象序列化的3種方案,具有一定的參考價(jià)值,感興趣的可以了解一下

在上位機(jī)開發(fā)過(guò)程中,我們可能經(jīng)常要實(shí)現(xiàn)一個(gè)數(shù)據(jù)對(duì)象的持久化,將對(duì)象保存到具體的文件中,今天給大家介紹常用的3種方案,大家根據(jù)實(shí)際情況,選擇適合的方案。

一、準(zhǔn)備工作

在介紹這4種方案之前,我們以西門子PLC信息存儲(chǔ)為例,先提前準(zhǔn)備好一個(gè)類——PLCInfo,代碼如下所示:

圖片

我們通過(guò)序列化可以將對(duì)象轉(zhuǎn)換成一個(gè)字符串進(jìn)行存儲(chǔ),同時(shí)通過(guò)反序列化可以將該字符串轉(zhuǎn)成一個(gè)對(duì)象,對(duì)象序列化與反序列化是一個(gè)相互轉(zhuǎn)換的過(guò)程。

在上面的代碼中,為了可以觀察到反序列化的結(jié)果,我們?cè)谠搶?shí)體類中重寫一下ToString方法,然后實(shí)例化一個(gè)PLCInfo對(duì)象,后續(xù)就針對(duì)這個(gè)對(duì)象進(jìn)行操作,代碼如下所示:

圖片

二、二進(jìn)制序列化

二進(jìn)制序列化及反序列化的方式主要是使用BinaryFormatter這個(gè)類,序列化方法代碼如下:

圖片

反序列化方法代碼如下:

圖片

測(cè)試結(jié)果如下:

圖片

分析:我們可以看到二進(jìn)制序列化的結(jié)果是一串亂碼,但是可以正常反序列化成一個(gè)對(duì)象。通過(guò)二進(jìn)制序列化的優(yōu)勢(shì)是比較簡(jiǎn)單,甚至還能加密,但是劣勢(shì)在于結(jié)果比較長(zhǎng),可讀性比較差,在實(shí)體類中要加個(gè)[Serializable]特性標(biāo)識(shí)。

三、Xml序列化

Xml序列化及反序列化的方式主要是使用XmlSerializer這個(gè)類,序列化方法代碼如下:

圖片

反序列化方法代碼如下:

圖片

測(cè)試結(jié)果如下:

圖片

分析:我們可以看到Xml序列化的結(jié)果可讀性比二進(jìn)制要好很多,但是相比后面的Json還是相對(duì)復(fù)雜一些。

四、Json序列化

Json序列化及反序列化的方式主要是使用Newtonsoft.Json這個(gè)庫(kù),可以通過(guò)Nuget安裝,并添加引用,使用非常簡(jiǎn)單,序列化及反序列化方法代碼如下:

圖片

測(cè)試結(jié)果如下:

圖片

分析:我們可以看到Json序列化的結(jié)果相對(duì)于Xml來(lái)說(shuō)要更加簡(jiǎn)潔一些,這也是為什么Json使用越來(lái)越多的原因。

到此這篇關(guān)于C#實(shí)現(xiàn)對(duì)象序列化的3種方案小結(jié)的文章就介紹到這了,更多相關(guān)C# 對(duì)象序列化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn)

    C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#中Razor模板引擎簡(jiǎn)單使用

    C#中Razor模板引擎簡(jiǎn)單使用

    Razor 是一種標(biāo)記語(yǔ)法,可以讓您將基于服務(wù)器的代碼(Visual Basic 和 C#)嵌入到網(wǎng)頁(yè)中,本文給大家介紹了C#中Razor模板引擎簡(jiǎn)單使用,需要的朋友可以參考下
    2022-02-02
  • C#判斷指定驅(qū)動(dòng)器是否已經(jīng)準(zhǔn)備就緒的方法

    C#判斷指定驅(qū)動(dòng)器是否已經(jīng)準(zhǔn)備就緒的方法

    這篇文章主要介紹了C#判斷指定驅(qū)動(dòng)器是否已經(jīng)準(zhǔn)備就緒的方法,涉及C#針對(duì)硬件IO操作的技巧,需要的朋友可以參考下
    2015-04-04
  • C# 如何在MVC3中取消備用控制器的選擇

    C# 如何在MVC3中取消備用控制器的選擇

    本篇文章介紹了,如何在MVC3中取消備用控制器的選擇的詳細(xì)分析。需要的朋友參考下
    2013-05-05
  • C#實(shí)現(xiàn)WinForm控件焦點(diǎn)的獲取與失去

    C#實(shí)現(xiàn)WinForm控件焦點(diǎn)的獲取與失去

    在一個(gè)數(shù)據(jù)輸入表單中,當(dāng)用戶從一個(gè)文本框切換到另一個(gè)文本框時(shí),需要準(zhǔn)確地判斷焦點(diǎn)的轉(zhuǎn)移,以便進(jìn)行數(shù)據(jù)驗(yàn)證、提示信息顯示等操作,本文將探討 Winform 控件獲取與失去焦點(diǎn)的相關(guān)知識(shí),需要的朋友可以參考下
    2025-01-01
  • c# 使用OpenCV識(shí)別硬幣

    c# 使用OpenCV識(shí)別硬幣

    這篇文章主要介紹了c# 使用OpenCV識(shí)別硬幣的方法,幫助大家更好的利用c#進(jìn)行深度學(xué)習(xí),感興趣的朋友可以了解下
    2020-12-12
  • C# FileStream復(fù)制大文件功能

    C# FileStream復(fù)制大文件功能

    這篇文章主要為大家詳細(xì)介紹了C# FileStream復(fù)制大文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C#實(shí)現(xiàn)實(shí)體類和XML相互轉(zhuǎn)換

    C#實(shí)現(xiàn)實(shí)體類和XML相互轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)實(shí)體類和XML相互轉(zhuǎn)換的資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(三)

    深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(三)

    前兩篇已經(jīng)基本向大家介紹了繪圖的基本知識(shí).那么,我就用我們上兩篇所學(xué)的,做幾個(gè)例子.我們先來(lái)做一個(gè)簡(jiǎn)單的--仿QQ截圖
    2013-05-05
  • C#生成影像金字塔的原理實(shí)例

    C#生成影像金字塔的原理實(shí)例

    最近在處理一個(gè)關(guān)于影像金字塔的問題,這個(gè)金字塔程序是用C#寫的,需要的朋友可以參考一下
    2013-05-05

最新評(píng)論