我試圖從C到C#的過渡,我有幾個關於將對象保存到文件和序列化的問題。保存對象/序列化
在C語言中,如果你想保存一個數據結構,我已經被教導過把它保存爲文本格式,因爲字符串通常是不必要的,而且作爲內存快照存在的二進制文件通常更好,因爲它不會「 t需要編碼/解碼並將字符串匹配到字段。 在C#中,該方法看起來不同,它將對象字段分別轉換爲字符串或其他格式,然後在必要時重建對象。我不確定二進制序列化如何工作,但我認爲它將數據轉換爲某種格式,並不存在作爲純粹的非格式化內存快照。
爲什麼沒有在C#中使用任何編碼/解碼的「內存快照」方法?我能想到的唯一原因是與其他代碼和環境的兼容性,也許它與對象與常規結構的複雜性有關。
如果對象具有複雜的屬性,而不僅僅是值類型;那麼對象的每個「部分」將被存儲在不同的存儲位置;這些對象也可能包含其他對象。只是一個簡單的猜測,但執行這樣的邏輯來保存對象會非常複雜。 – daryal
生產力的成本降低和好處之一是.NET對內存和硬件的抽象。如果你需要堅持基本的需求,讓框架處理繁重的工作(像往常一樣),用[Serializable]標記你的類並使用System.Runtime.Serialization.Formatters.Binary中可用的類。 – Michael