C#二進制序列化實例剖析。本站提示廣大學習愛好者:(C#二進制序列化實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#二進制序列化實例剖析正文
本文實例講述了C#二進制序列化的辦法。分享給年夜家供年夜家參考。詳細以下:
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) { } //二進制序列化分歧於 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 異常有用,生成了異常簡練的字撙節。 //經由過程該格局化法式序列化的一切對象也能夠經由過程該格局化法式停止反序列化,這使該對象關於序列化將在 .NET Framework 上被反序列化的對象而言非常幻想。 //須要特殊留意的是,在反序列化一個對象時不挪用結構函數。出於機能方面的緣由對反序列化施加了該束縛。 //然則,這違背了運轉庫與對象編寫器之間的一些平日商定,開辟人員應確保他們在將對象標志為可序列化時懂得厥後果。 //假如可移植性是必須的,則轉為應用 SoapFormatter。 //只需用 SoapFormatter 取代下面代碼中的 BinaryFormatter, //而且如後面一樣挪用 Serialize 和 Deserialize。此格局化法式為下面應用的示例生成以下輸入。 } }
願望本文所述對年夜家的C#法式設計有所贊助。