麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

二進制流序列化(反序列化)和XML序列化(反序列化)

2019-11-11 05:47:16
字體:
來源:轉載
供稿:網友
序列化(Serialization):序列化是將對象狀態轉換為可保存或傳輸的其它數據格式的過程。

反序列化(Deserialization) :與序列化相對的是反序列化,將其它數據格式轉換為對象的過程。

作用:將對象中的數據轉換成其它文件,方便信息的存儲與交換。

 .NET框架提供了三種序列化的方式:      1、使用BinaryFormatter進行序列化,類中的所有成員變量(甚至標記為 PRivate 的變量)都將被序列化。      2、使用SoapFormatter進行序列化,類中的所有成員變量(甚至標記為 private 的變量)都將被序列化。      3、使用xmlSerializer進行序列化,只有公共字段被序列化。      第一種方式提供了一個簡單的二進制數據流以及某些附加的類型信息。而第二種將數據流格式化為XML存儲。第三種其實和第二種差不多也是XML的格式存儲,只不過比第二種的XML格式要簡化很多(去掉了SOAP特有的額外信息)。    1,2必須使用[Serializable]屬性將類標志為可序列化的,3可以不用對類用[Serializable]屬性進行標記    1,2可以序列化類中的所有成員變量(私有的,公有的),3只可以序列化類中的公有成員變量。    如果某個類的元素不想被序列化,  1,2可以使用[NonSerialized]屬性來標志,3、可以使用[XmlIgnore]來標志。

1.二進制流序列化及反序列化

1.1序列化

using System;using System.Collections.Generic;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace xuliehua{    //用[Serializable]標記要序列化的類型    [Serializable]    public class Person    {        public string name;        public int age;        public string adress;        public void say()        {            Console.WriteLine("hello world");        }    }    class Program    {        static void Main(string[] args)        {            List<Person> lp = new List<Person>() {             new Person(){name="凱",age=21,adress="影流"},            new Person(){name="劉",age=23,adress="守望之海"},            new Person(){name="陸",age=22,adress="征服之海"},            new Person(){name="星",age=19,adress="艾歐尼亞"},            new Person(){name="偉",age=24,adress="影流"},            };            //創建一個文件流            using (FileStream fs = new FileStream(@"E:/person.txt", FileMode.OpenOrCreate))            {                //創建二進制序列化器                BinaryFormatter bf = new BinaryFormatter();                //序列化                bf.Serialize(fs, lp);            }        }    }}查看序列化后的文件:

1.2反序列化

反序列化需要引用原來的類所在的程序集,如圖所示:

using System;using System.Collections.Generic;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace fanxuliehua{    class Program    {        static void Main(string[] args)        {            //創建一個文件流            using (FileStream fs = new FileStream(@"E:/person.txt", FileMode.Open))            {                //創建二進制序列化器                BinaryFormatter bf = new BinaryFormatter();                //反序列化                var result = (List<xuliehua.Person>)bf.Deserialize(fs);                result.ForEach(r => Console.WriteLine(r.name + "/t" + r.age + "/t" + r.adress));            }        }    }}結果如圖所示:

2.XML序列化及反序列化

2.1序列化

using System;using System.Collections.Generic;using System.IO;using System.Xml.Serialization;namespace xuliehua{    public class Person    {        public string name;        public int age;        public string adress;        public void say()        {            Console.WriteLine("hello world");        }    }    class Program    {        static void Main(string[] args)        {            List<Person> lp = new List<Person>() {             new Person(){name="薩滿",age=211,adress="影流"},            new Person(){name="獵人",age=231,adress="守望之海"},            new Person(){name="法師",age=221,adress="征服之海"},            new Person(){name="戰士",age=191,adress="艾歐尼亞"},            new Person(){name="術士",age=241,adress="影流"},            };            using (FileStream fs = new FileStream(@"E:/person.xml", FileMode.OpenOrCreate))            {                XmlSerializer xs = new XmlSerializer(typeof(List<Person>));                xs.Serialize(fs, lp);            }        }    }}查看序列化后的文件:

2.2反序列化

同樣,也需要引用原來的類所在的程序集。

using System;using System.Collections.Generic;using System.IO;using System.Xml.Serialization;namespace fanxuliehua{    class Program    {        static void Main(string[] args)        {            using (FileStream fs = new FileStream(@"E:/person.xml", FileMode.Open))            {                XmlSerializer xs = new XmlSerializer(typeof(List<xuliehua.Person>));                var result = (List<xuliehua.Person>)xs.Deserialize(fs);                result.ForEach(r => Console.WriteLine(r.name + "/t" + r.age + "/t" + r.adress));            }        }    }}結果如圖所示:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 18一20岁一级毛片 | 日韩毛片网 | 国产精品视频一区二区三区四区五区 | 久久久综合久久久 | xnxx 日本19 | 视频一区 中文字幕 | 操碰 | 99精品无人区乱码在线观看 | 亚欧在线免费观看 | 久久精品在线免费观看 | 免费视频aaa| 亚洲成人在线免费 | 国产第一页精品 | 国产精品视频一区二区三区综合 | 中文字幕在线播放不卡 | 99re热视频这里只精品 | 黄色男女视频 | 高清视频91| 在线观看国产免费视频 | 久久久综 | 最新一区二区三区 | 毛片韩国 | 久久成人视屏 | 国产一区日韩一区 | 深夜毛片免费看 | 亚洲成人国产综合 | 特级黄色一级毛片 | 国产精品久久久久久久四虎电影 | 欧美日本免费一区二区三区 | 久久91亚洲精品久久91综合 | 一区二区三区在线观看av | 久久亚洲一区二区三区成人国产 | 91精品福利视频 | 亚洲精品在线观看免费 | 一级免费在线视频 | 亚州精品天堂中文字幕 | 在线日韩av电影 | 国产成人免费精品 | 欧美性激情视频 | 蜜桃视频观看麻豆 | 欧美wwwwww |