摘要:何謂序列化(Serialization)
針對序列化(Serialization)這個名稱之前都是似懂非懂的,今天就來給它研究看看,啥咪是Serialization呢? 簡單來說,就是將物件放在可儲存的媒體,像是硬碟等等.....
實作序列化常見的有兩種作法:
1.使用 Formatter 類別 (今天就實作這個)
2.使用 XmlSerializer 類別
第一步:先要import System.Runtime.Serialization這個命名空間,然後這個要序列化的類別上加上[Serializable] 這個標記
using System.Runtime.Serialization;
//要被序列化的類別
[Serializable]
class Users
{
public string id;
public string name;
public int age;
}
第二步:先要import System.Runtime.Serialization和System.Runtime.Serialization.Formatters.Binary的命名空間,等等會利用我們的Users類別(已經序列化的類別),例下就是利用Formatter 來做轉換,將User類別存到txt檔上,並且可以反序列化將txt檔放在User類別上
using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; //序列化 private void button1_Click(object sender, EventArgs e) { Users objuser = new Users(); objuser.id = "1"; objuser.name = "Brian"; objuser.age = 30; IFormatter formatter = new BinaryFormatter(); FileStream fs = new FileStream(@"c:\\users.txt", FileMode.Create); formatter.Serialize(fs, objuser); fs.Close(); } //反序列化 private void btnDeserialize_Click(object sender, EventArgs e) { FileStream fs = new FileStream(@"c:\\users.txt", FileMode.Open); IFormatter formatter = new BinaryFormatter(); Users objuser = (Users)formatter.Deserialize(fs); this.labId.Text = objuser.id; this.labName.Text = objuser.name; this.labAge.Text = objuser.age.ToString(); fs.Close(); }