一、名詞簡釋
在程式中產生的物件都是存在記憶體中,當程式終止後物件就會消失,如果我們想要永久保存這些物件就可以使用序列化,把物件存到檔案系統中,日後要再使用反序列化還原物件即可。除了保存之外,物件須傳送至網路或遠端服務但對方卻無法辨釋你所定義的類別時,可把物件序列化成Soap或Xml這種通用的格式來傳遞物件。
1.BinaryFormatter 物件序列化成二進位檔,從二進位檔還原回物件
2.XmlSerializer 物件序列化成Xml檔,從Xml檔還原回物件
3.SoapFormatter 物件序列化成Soap檔,從Soap檔還原回物件
二、程式範例
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(){
Name = "Kobe";
Age = 30;
}
}
class Program
{
static void Serialize()
{
Person p = new Person();//自訂義物件
FileStream fs = new FileStream(@"D:\BinaryFormatter.txt",FileMode.Create);//資料流物件
BinaryFormatter bf = new BinaryFormatter();//二進位格式序列化物件
bf.Serialize(fs, p);//序列化
fs.Flush();
fs.Close();
fs.Dispose();
}
static Person Deserialize()
{
Person p;
FileStream fs = new FileStream(@"D:\BinaryFormatter.txt", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
p = (Person)bf.Deserialize(fs);//反序列化
return p;
}
static void Main(string[] args)
{
Serialize();
Person p = Deserialize();
Console.Write("{0} is {1} years old",p.Name,p.Age);
Console.ReadLine();
}
}
沒有留言:
張貼留言