c# 序列化(Serialize)與反序列化(Deserialize)

序列化又稱串行化,是.NET運行時環(huán)境用來支持用戶定義類型的流化的機制。
其目的是以某種存儲形式使自定義對象持久化(Unity-Inspector),或者將這種對象從一個地方傳輸?shù)搅硪粋€地方(網(wǎng)絡傳輸)。
.NET框架提供了兩種串行化的方式:

  • BinaryFormatter(提供了一個簡單的二進制數(shù)據(jù)流以及某些附加的類型信息)
  • XmlSerializer(將數(shù)據(jù)流格式化為XML存儲)

標簽

  • 序列化 [Serializable]
  • 反序列化 [NonSerialized] [XmlIgnore]

定義一個Person結構

[Serializable]
public class Person
{
    public string name;
    public int age;
    public override string ToString()
    {
        return "name:" + name + " age:" + age;
    }
}

XmlSerializer

        var person = new Person();
        person.name = "小豬";
        person.age = 20;
        print(person.ToString());
        using (var fs = new FileStream("person.bin", FileMode.Create)) {
            var xs = new XmlSerializer(typeof(Person));
            xs.Serialize(fs, person);
        }
        Person p;
        using(var fs = new FileStream("person.bin", FileMode.Open)) {
            var xs = new XmlSerializer(typeof(Person));
            p = xs.Deserialize(fs) as Person;
        }
        print(p.ToString());

BinaryFormatter

        var person = new Person();
        person.name = "小豬";
        person.age = 20;
        print(person.ToString());
        using (var fs = new FileStream("person2.bin", FileMode.Create)) {
            var bf = new BinaryFormatter();
            bf.Serialize(fs, person);
        }
        Person p;
        using (var fs = new FileStream("person2.bin", FileMode.Open)) {
            var bf = new BinaryFormatter();
            p = bf.Deserialize(fs) as Person;
        }
        print(p.ToString());
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • JAVA序列化機制的深入研究 對象序列化的最主要的用處就是在傳遞,和保存對象(object)的時候,保證對象的完整...
    時待吾閱讀 11,177評論 0 24
  • 一、 序列化和反序列化概念 Serialization(序列化)是一種將對象以一連串的字節(jié)描述的過程;反序列化de...
    步積閱讀 1,490評論 0 10
  • 官方文檔理解 要使類的成員變量可以序列化和反序列化,必須實現(xiàn)Serializable接口。任何可序列化類的子類都是...
    獅_子歌歌閱讀 2,546評論 1 3
  • java--序列化及其算法透析 文章來自https://longdick.iteye.com/blog/45855...
    小烏龜爸閱讀 390評論 0 0
  • 事務 一、概述 1.什么是事務 事務指邏輯上的一組操作,組成這組操作的各個單元,要么全部成功,要么全部不成功。 一...
    我可能是個假開發(fā)閱讀 571評論 1 6

友情鏈接更多精彩內(nèi)容