物件序列化存在的原因

2022-04-10 11:57:37 字數 849 閱讀 3222

物件序列化存在的原因

——談談類與系統自帶的實際已經存在的型別之間的區別

在剛剛接觸類的時候,我想大家都有乙個跟我一樣的想法,就是類(class)就是我們自定義的一種型別,跟系統其他的型別(像是int、double、float等等)是一樣的。只是我們在建立的時候需要定義類(其實宣告類就是建立類了),然後就跟其他型別一樣了,使用的時候宣告乙個變數並初始化(也就是給變數負值)就ok了。似乎沒什麼區別了。

但是在進行物件傳輸的時候,類的例項化物件的傳輸方式,是乙個字段乙個欄位地去傳輸(乙個欄位就可以看成是乙個int或者string之類的),可不能是直接傳輸乙個物件的,這樣就不爽了,前面都說了,我類建立了之後,咱們類就應該個其他型別(int...)平起平坐了,為何你int、string能直接傳輸,我物件怎麼就不能直接傳輸呢?不公平!

不公平。這可能就是先入為主在編譯器中的體現,也可能就是親生的和過繼過來的孩子還是有親疏之分的。所以物件想要像int、string一樣直接傳輸,就需要做出更大的努力。這個努力主要的表現就是實現這個物件的類要能系列化(including這個類的父類以及這個類中所有的型別都可以序列化)。能序列化了之後,我們還得手動敲**讓他執行序列化。

甚至在物件序列化的時候根本不對方法進行序列化,只是對欄位進行序列化。 

物件序列化就是把物件程式設計位元組流。(本質)

所以,做個拖油瓶不容易。

使類能夠序列化的的方法就是在類的上面加上[serializable],很簡單。然後序列化的步驟有:建立序列化器binaryformatter;建立乙個流(檔案流filestream、網路流、記憶體流memorystream等等);開始序列化 .seralize()

反序列化步驟:建立序列化器;建立乙個檔案流;開始反序列化 .deseralize()

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...

物件 序列化 反序列化

public class eventmessage 資訊提示類 型別1 操作日誌2 安全日誌 標題 內容 icon型別 url 執行script指令碼字串 需加 public static void messagebox int m type,string m title,string m body...

物件序列化

using system using system.io using system.diagnostics using system.reflection using system.runtime.serialization using system.runtime.serialization.fo...