http://www.cnblogs.com/linlf03/archive/2011/11/03/2234424.html
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