对象序列化与反序列化优点:数据安全,保存读取简单快捷,应用很广。
小示例:序列化保存对象与反序列化读取对象
1.先定义一个学生对象,代码如下:
[Serializable]//可序列化标识
class Student
{
public string Name { get; set; }
public int Age { get; set; }
public string BirthDay { get; set; }
public string Sex { get; set; }
}
2.新建窗体,后台代码中定义两个方法分别用来保存、读取
/// <summary>
/// 保存学生信息
/// </summary>
/// <param name="objStudent"></param>
private void SaveStudent(Student objStudent)
{
FileStream fs = new FileStream("Student.obj", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, objStudent);
fs.Close();
}
/// <summary>
/// 读取学生信息
/// </summary>
/// <returns></returns>
private Student ReadStudent()
{
FileStream fs = new FileStream("Student.obj",FileMode.Open);
BinaryFormatter bs = new BinaryFormatter();
Student objStudent = (Student)bs.Deserialize(fs);
fs.Close();
return objStudent;
}
3.在按钮的事件中,分别调用上一步定义的方法:
private void btnSave_Click(object sender, EventArgs e)
{
Student s = new Student {
Name = "李超",
Age = 18,
BirthDay = "1998-02-02",
Sex = "男"
};
SaveStudent(s);
MessageBox.Show("保存成功");
}
private void btnRead_Click(object sender, EventArgs e)
{
Student objStudent = ReadStudent();
string strStudent = "姓名:"+ objStudent.Name + Environment.NewLine;
strStudent += "性别:" + objStudent.Sex + Environment.NewLine;
strStudent += "年龄:" + objStudent.Age + Environment.NewLine;
strStudent += "生日:" + objStudent.BirthDay + Environment.NewLine;
MessageBox.Show(strStudent);
}