C# 序列化与反序列化
程序员文章站
2022-06-16 08:26:24
...
序列化:将对象转化为二进制,方便存储和数据交换。
byte[ ]是任何数据的最根本表示形式,任何数据最终都是二进制的。
反序列化:将二进制转换为对象
目的:传输数据(网络中传输数据的形式)
方法:
1、将要 序列化对象的类,标记为可被序列化的;在类的上面标记[serializable]
2、只有被[serializable]标记的类创建的对象才可以被序列化;但是这个类不可以被继承。
3、BinaryFormatter 用来序列化二进制;调用序列化的函数:.Serialize( )
通过一个流将一个二进制文件写入到指定目的;再进过反序列化读取文件
using System.IO; //流所在的命名空间
using System.Runtime.Serialization.Formatters.Binary; // 序列化所在的命名空间
=======================================================================
序列化
father fa1 = new father();
fa1.Name = "dad";
fa1.Profession = "peasant";
string path = @"C:\Users\Administrator\Desktop\a.txt";
using(FileStream filw=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write ))
{
// 将对象序列成二进制,开始序列化对象
BinaryFormatter bf = new BinaryFormatter();//
bf.Serialize(filw,fa1); // 序列化对象,通过流自动将内容写入到文件中
}
---------------------------------------------------------------------------------------------------------------------------------------------------------反序列化
// 接受对方发过来的数据,反序列话为对象
father ff;
using(FileStream filr=new FileStream (path,FileMode.OpenOrCreate ,FileAccess .Read ))
{
BinaryFormatter bby = new BinaryFormatter();
ff=(father)bby.Deserialize(filr); // 反序列话deserialize,返回的类型为object
}
[Serializable ] // 只有被[serializable]标记的类创建的对象才可以被序列化
public class father {
string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
string _profession;
public string Profession
{
get { return _name; }
set { _name = value; }
}
void word()
{
Console.WriteLine("This is a class");
}
下一篇: css权威指南--笔记