C Serializable 物件序列化

2021-08-21 17:02:01 字數 1359 閱讀 2873

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;      

核心物件 使用者物件 GDI物件

一 核心物件 1.可以理解為作業系統使用和管理的控制塊,例如嵌入式作業系統裡的任務控制塊,郵箱控制塊等。2.核心物件中有少數的靜態成員 全域性可見 3.只有通過呼叫windows api 才能使用核心物件。4.核心物件的作用域是基於程序的,這樣做處於安全和健壯型考慮。5.核心物件有乙個靜態成員用來計...

物件 物件導向 建立物件方式 Json

var obj new object obj.name 小明 obj.age 20 obj.男 obj.play function obj.showname function console.log obj.name 小明 console.log obj.age 20 console.log obj...

物件和物件引用

每天都在變化,每天都在進步 基礎情況 a a new a a a 建立了個a 型別的引用a,此時指向null new a 在堆中建立了乙個類a的物件,返回其引用位址 將物件的位址給予引用 情景1a a new a 01 a b a 02 a null 03 此時b仍然有資料,因為 02 的時候,發生...