C#二進(jìn)制序列化實(shí)例分析
本文實(shí)例講述了C#二進(jìn)制序列化的方法。分享給大家供大家參考。具體如下:
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; namespace WebApplication1.Serialize { public partial class Binary1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } //二進(jìn)制序列化不同于 XMLSerializer 類,后者只序列化公共字段。 protected void Button1_Click(object sender, EventArgs e) { MyObject obj = new MyObject(); obj.n1 = 1; obj.n2 = 24; obj.str = "Some String"; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("C:/MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, obj); stream.Close(); } [Serializable] public class MyObject { public int n1 = 0; public int n2 = 0; public String str = null; } protected void Button2_Click(object sender, EventArgs e) { IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("C:/MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read); MyObject obj = (MyObject)formatter.Deserialize(stream); stream.Close(); // Here's the proof. Response.Write("n1: {0}"+ obj.n1+"<br/>"); Response.Write("n2: {0}" + obj.n2 + "<br/>"); Response.Write("str: {0}" + obj.str + "<br/>"); } //上面所用的 BinaryFormatter 非常有效,生成了非常簡(jiǎn)潔的字節(jié)流。 //通過該格式化程序序列化的所有對(duì)象也可以通過該格式化程序進(jìn)行反序列化,這使該工具對(duì)于序列化將在 .NET Framework 上被反序列化的對(duì)象而言十分理想。 //需要特別注意的是,在反序列化一個(gè)對(duì)象時(shí)不調(diào)用構(gòu)造函數(shù)。出于性能方面的原因?qū)Ψ葱蛄谢┘恿嗽摷s束。 //但是,這違反了運(yùn)行庫與對(duì)象編寫器之間的一些通常約定,開發(fā)人員應(yīng)確保他們?cè)趯?duì)象標(biāo)記為可序列化時(shí)了解其后果。 //如果可移植性是必需的,則轉(zhuǎn)為使用 SoapFormatter。 //只需用 SoapFormatter 代替上面代碼中的 BinaryFormatter, //并且如前面一樣調(diào)用 Serialize 和 Deserialize。此格式化程序?yàn)樯厦媸褂玫氖纠梢韵螺敵觥? } }
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
Winform動(dòng)態(tài)加載TabControl用法實(shí)例
這篇文章主要介紹了Winform動(dòng)態(tài)加載TabControl用法,以實(shí)例形式詳細(xì)講述了Winform動(dòng)態(tài)加載TabControl的方法,在C#應(yīng)用程序開發(fā)中具有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11C#對(duì)Access進(jìn)行增刪改查的完整示例
本文主要是講C#對(duì)Access數(shù)據(jù)庫的增刪改查操作,想學(xué)習(xí)C#和Access數(shù)據(jù)庫操作基礎(chǔ)的可以參考借鑒,以下代碼都經(jīng)過實(shí)踐測(cè)試可用,下面跟著小編一起來看看。2016-08-08Unity輸出帶點(diǎn)擊跳轉(zhuǎn)功能的Log實(shí)現(xiàn)技巧詳解
這篇文章主要為大家介紹了Unity輸出帶點(diǎn)擊跳轉(zhuǎn)功能的Log實(shí)現(xiàn)技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11C#具名參數(shù)(Named Parameters)的使用
在C#中,具名參數(shù)是一種在方法調(diào)用中使用參數(shù)名稱來指定參數(shù)值的技術(shù),本文主要介紹了C#具名參數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01C# Redis學(xué)習(xí)系列(二)Redis基本設(shè)置
這篇文章主要為大家分享了C# Redis學(xué)習(xí)系列教程第二篇, Redis基本設(shè)置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05C#難點(diǎn)逐個(gè)擊破(6):C#數(shù)據(jù)類型與.net framework數(shù)據(jù)類型
最近開始看Illustrator C#2008,這真是一本好書,我讀計(jì)算機(jī)書籍這么多了,能讓我稱為好書的沒有多少。2010-02-02c#中string的特性介紹及注意事項(xiàng)小結(jié)
這篇文章主要給大家介紹了關(guān)于c#中string的特性介紹及注意事項(xiàng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11