【轉】C# Serializable對象序列化的作用

 1、序列化定義:將對象轉換爲容易傳輸的格式的過程。例如,可以序列化一個對象,然後使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。反之,反序列化根據流重新構造對象。

在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉換爲字節流,然後再把字節流寫入數據流。在隨後對對象進行反序列化時,將創建出與原對象完全相同的副本

2、使用序列化的原因:將對象的狀態保存在存儲媒體中以便可以在以後重新創建出完全相同的副本;按值將對象從一個應用程序域發送至另一個應用程序域。例如,序列化可用於在 ASP.NET 中保存會話狀態,以及將對象複製到 Windows 窗體的剪貼板中。它還可用於按值將對象從一個應用程序域遠程傳遞至另一個應用程序域。本文簡要介紹了 Microsoft .NET 中使用的序列化。

3、基本序列化

[Serializable]

public class MyObject {

    public int n1 = 0;       

    public int n2 = 0;         

    public String str = null;      

       }

 以下代碼片段說明了如何將此類的一個實例序列化爲一個文件:

  MyObject obj = new MyObject();            

    obj.n1 = 1;          

      obj.n2 = 24;            

      obj.str = "一些字符串";

     IFormatter formatter = new BinaryFormatter();            

    Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);            

    formatter.Serialize(stream, obj);            

    stream.Close();

4、五.選擇性序列化    

 類通常包含不應被序列化的字段。例如,假設某個類用一個成員變量來存儲線程 ID。當此類被反序列化時,序列化此類時所存儲的 ID 對應的線程可能不再運行,所以對這個值進行序列化沒有意義。可以通過使用 NonSerialized 屬性標記成員變量來防止它們被序列化,如下所示:

 [Serializable]            

public class MyObject            

 {               

   public int n1;               

   [NonSerialized]

   public int n2;             

   public String str;      

 }

 

C# 序列號與反序列化總結

 1、 C# 序列化與反序列化

 2、C# Serializable對象序列化的作用 (此文)

 參考:http://www.cnblogs.com/winner/archive/2008/03/25/1120757.html


原文:http://www.cnblogs.com/linlf03/archive/2011/11/03/2234424.html

發佈了49 篇原創文章 · 獲贊 11 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章