對象序列化是將對象轉換爲二進制數據(字節流),反序列化是將二進制數據還原成對象。對象的非持久態的,不只在程序重啓、操做系統重啓會形成對象的丟失,就是退出函數範圍等均可能形成對象的消失,而序列化與反序列化就是爲了完成對象的持久化。ide
新建可序列化的實體類:函數
[Serializable] // 該特性標記該類可序列化 public class Person { private int id; private string name; public int Id { get { return id; } set { id = value; } } public string Name { get { return name; } set { name = value; } } public override string ToString() { return string.Format("Id: {0}, Name: {1}", id, name); } }
var person = new Person(); person.Id = 1; person.Name = "張三"; // 初始化序列化工具類對象 BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fs = File.OpenWrite("D:/data"); // 獲取一個輸出流對象 binaryFormatter.Serialize(fs,person); // 執行序列化
fs.Close();
// 初始化序列化工具類對象 BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fs = File.OpenRead("D:/data"); // 獲取一個輸入流對象 var obj = binaryFormatter.Deserialize(fs); Console.WriteLine(obj); // Id: 1, Name: 張三
fs.Close();