這個可以直接把對象轉化為二進制進行存儲與通信;
在需要序列化的類前加[Serializable],使用BinaryFormatter類來進行操作;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace 序列化與反序列化
{
class Program
{
static void Main(string[] args)
{
Student stu = new Student("劉備",28,'男');
Student stu2;
string file = @"E:\code\test\test1.txt";
using (FileStream fsWriter=new FileStream(file,FileMode.OpenOrCreate,FileAccess.Write))
{
//下面對stu進行序列化;
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWriter, stu);
}
using (FileStream fsReader=new FileStream(file,FileMode.Open,FileAccess.Read))
{
//下面進行反序列話;
BinaryFormatter bf = new BinaryFormatter();
stu2 = (Student)bf.Deserialize(fsReader);
}
Console.WriteLine("{0}今年{1}歲,是個{2}生",stu2.Name,stu2.Age,stu2.Gender);
Console.ReadKey();
}
}
[Serializable]
public class Student
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
public Student(string name,int age,char gender)
{
Name = name;
Age = age;
Gender = gender;
}
}
}