最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在C#中實(shí)現(xiàn)對(duì)象序列化的幾種常用方式

 更新時(shí)間:2026年04月14日 08:36:58   作者:深圳市由你創(chuàng)科技  
文章主要介紹了實(shí)現(xiàn)對(duì)象序列化之前的準(zhǔn)備工作,以及在C#中實(shí)現(xiàn)對(duì)象序列化主要有二進(jìn)制序列化、XML序列化和JSON序列化三種常用方式,并對(duì)每種方式的具體實(shí)現(xiàn)進(jìn)行了說(shuō)明,需要的朋友可以參考下

在實(shí)現(xiàn)之前,先要做一些準(zhǔn)備工作,序列化其實(shí)是對(duì)象和字符串(文件)之間的互相轉(zhuǎn)換,所以首先我們準(zhǔn)備好一個(gè)實(shí)體類,很簡(jiǎn)單的Person類:

using System.Text.Json;
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}
Person person = new Person { Name = "張三", Age = 25, Email = "zhang@example.com" };

在 C# 中實(shí)現(xiàn)對(duì)象序列化主要有以下幾種常用方式:

一、二進(jìn)制

二進(jìn)制序列化及反序列化的方式主要是使用BinaryFormatter這個(gè)類,類名上面要加上[Serializable],不加無(wú)法序列化,序列化代碼如下:

[Serializable]
public class Person { 
   public string Name { get; set; } 
   public int Age { get; set; } 
   public string Email { get; set; } 
}
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("data.bin", FileMode.Create))
{
    formatter.Serialize(fs, person );
}
// 反序列化
using (FileStream fs = new FileStream("data.bin", FileMode.Open))
{
    DataObject deserializedObj = (DataObject)formatter.Deserialize(fs);
}

二、XML

XML序列化可提高可讀性,以及對(duì)象共享和使用的靈活性,XML序列化將對(duì)象的公共字段和屬性或方法的參數(shù)和返回值序列化成符合特定XML格式的流。

XML序列化代碼如下:

[Serializable]
public class Person { 
  public string Name { get; set; } 
  public int Age { get; set; } 
  public string Email { get; set; } 
}
using System.Xml.Serialization;
using System.IO;
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, person);
    string xmlString = writer.ToString();
    Console.WriteLine(xmlString);
}
// 反序列化
using (StringReader reader = new StringReader(xmlString))
{
    Person deserializedObj = (Employee)serializer.Deserialize(reader);
}

三、JSON

JSON序列化是目前使用很多的一種方式,實(shí)現(xiàn)JSON序列化的方式也有很多,一般會(huì)使用NewSoft.Json這個(gè)庫(kù)來(lái)做,可以通過(guò)Nuget搜索安裝。

// 序列化
string json = JsonConvert.SerializeObject(person);
// 反序列化
Product deserializedProduct = JsonConvert.DeserializeObject<Person>(json);
// 格式化輸出
string formattedJson = JsonConvert.SerializeObject(product, Formatting.Indented);

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

相關(guān)文章

  • c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的方法

    c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的方法

    下面小編就為大家?guī)?lái)一篇c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#代碼實(shí)現(xiàn)設(shè)置Word文檔頁(yè)面(頁(yè)面大小、邊距、方向)

    C#代碼實(shí)現(xiàn)設(shè)置Word文檔頁(yè)面(頁(yè)面大小、邊距、方向)

    本文基于 Free Spire.Doc for .NET 免費(fèi)庫(kù),介紹如何通過(guò) C# 代碼實(shí)現(xiàn)對(duì) Word 文檔頁(yè)面的靈活控制,包括設(shè)置頁(yè)面尺寸、方向、邊距,以及在同一文檔中使用多個(gè)不同布局的節(jié),希望對(duì)大家有所幫助
    2026-03-03
  • C#中的命名空間詳解(Namespace)

    C#中的命名空間詳解(Namespace)

    文章介紹了命名空間在C#編程中的作用,包括命名空間的定義與使用、using關(guān)鍵字的使用以及嵌套命名空間的實(shí)現(xiàn),通過(guò)這些機(jī)制,開發(fā)者可以有效地組織和隔離代碼,避免命名沖突,提高代碼的可讀性和可維護(hù)性
    2024-12-12
  • C#七大經(jīng)典排序算法系列(上)

    C#七大經(jīng)典排序算法系列(上)

    這篇文章主要為大家詳細(xì)介紹了C#七大經(jīng)典排序算法系列上篇,冒泡排序,快速排序等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • c# Process.Start()找不到系統(tǒng)文件的解決方法

    c# Process.Start()找不到系統(tǒng)文件的解決方法

    vs1027在X64應(yīng)用程序下執(zhí)行process.start()時(shí),OK;但是在X86應(yīng)用程序下執(zhí)行process.start(),報(bào)錯(cuò):找不到系統(tǒng)文件,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2023-09-09
  • C#中Func委托的實(shí)現(xiàn)

    C#中Func委托的實(shí)現(xiàn)

    Func是C#中的泛型委托,用于封裝具有返回值的方法,支持最多16個(gè)輸入?yún)?shù),并始終返回最后一個(gè)泛型參數(shù)指定的類型,下面就來(lái)詳細(xì)的介紹一下Func委托的使用,感興趣的可以了解一下
    2025-11-11
  • C#調(diào)用EXE文件實(shí)現(xiàn)傳參和獲取返回結(jié)果

    C#調(diào)用EXE文件實(shí)現(xiàn)傳參和獲取返回結(jié)果

    本文主要介紹了C#調(diào)用EXE文件實(shí)現(xiàn)傳參和獲取返回結(jié)果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺析C#中ref與out參數(shù)傳遞的核心區(qū)別與實(shí)戰(zhàn)指南

    淺析C#中ref與out參數(shù)傳遞的核心區(qū)別與實(shí)戰(zhàn)指南

    這篇文章為大家系統(tǒng)梳理了C#中ref與out參數(shù)傳遞的核心區(qū)別與使用場(chǎng)景,ref用于雙向傳遞,調(diào)用前必須初始化,方法內(nèi)可讀寫,out用于單向輸出,方法內(nèi)必須賦值,調(diào)用前無(wú)需初始化,下面小編就和大家詳細(xì)介紹一下吧
    2026-02-02
  • C#實(shí)現(xiàn)微信跳一跳小游戲的自動(dòng)跳躍助手開發(fā)實(shí)戰(zhàn)

    C#實(shí)現(xiàn)微信跳一跳小游戲的自動(dòng)跳躍助手開發(fā)實(shí)戰(zhàn)

    前段時(shí)間微信更新了新版本后,帶來(lái)的一款H5小游戲“跳一跳”在各朋友圈里又火了起來(lái),類似以前的“打飛機(jī)”游戲,這游戲玩法簡(jiǎn)單,但加上了積分排名功能后,卻成了“裝逼”的地方,于是很多人花錢花時(shí)間的刷積分搶排名
    2018-01-01
  • 六大設(shè)計(jì)原則之開閉原則

    六大設(shè)計(jì)原則之開閉原則

    這篇文章介紹了六大設(shè)計(jì)原則之開閉原則,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02

最新評(píng)論

临沂市| 北流市| 自贡市| 泸水县| 大田县| 南昌县| 浮梁县| 博白县| 巴林右旗| 沂南县| 舞钢市| 汤原县| 密云县| 和林格尔县| 昌吉市| 康乐县| 吉水县| 高尔夫| 海口市| 房产| 扬州市| 大渡口区| 景洪市| 岢岚县| 宁都县| 武穴市| 徐闻县| 靖西县| 佳木斯市| 会理县| 图木舒克市| 台南县| 南皮县| 怀仁县| 秦皇岛市| 江口县| 大冶市| 尉氏县| 老河口市| 左贡县| 儋州市|