让我来为你详细讲解C#序列化与反序列化实例的完整攻略。
什么是C#序列化与反序列化?
C#序列化与反序列化是指将C#的对象序列化成二进制字节流,并将其存储在磁盘或通过网络发送到其他计算机,同时,反序列化是指反过来将二进制字节流反序列化为C#对象。这样做的好处是可以方便地将对象跨平台传输和存储。
如何实现C#序列化与反序列化?
C#提供了两种序列化方式:二进制序列化和XML序列化。
二进制序列化
将C#对象转换为二进制字节流的过程称为二进制序列化。.NET Framework提供了BinaryFormatter类来执行这个任务。下面是一个简单的示例:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace SerializationDemo
{
[Serializable]
class Student
{
public int ID { get; set; }
public string Name { get; set; }
public string Grade { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student student = new Student();
student.ID = 1001;
student.Name = "Tom";
student.Grade = "A";
//将Student对象序列化到文件中
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("Student.dat", FileMode.Create))
{
formatter.Serialize(fs, student);
}
//从文件中反序列化Student对象
using (FileStream fs = new FileStream("Student.dat", FileMode.Open))
{
Student result = (Student)formatter.Deserialize(fs);
Console.WriteLine("ID:{0}, Name:{1}, Grade:{2}", result.ID, result.Name, result.Grade);
}
}
}
}
XML序列化
将C#对象转换为XML格式的字符串的过程称为XML序列化。.NET Framework提供了XmlSerializer类来执行这个任务。下面是一个简单的示例:
using System;
using System.IO;
using System.Xml.Serialization;
namespace SerializationDemo
{
[Serializable]
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public string Grade { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student student = new Student();
student.ID = 1001;
student.Name = "Tom";
student.Grade = "A";
// 将Student对象序列化到文件中
XmlSerializer serializer = new XmlSerializer(typeof(Student));
using (TextWriter writer = new StreamWriter("Student.xml"))
{
serializer.Serialize(writer, student);
}
// 从文件中反序列化Student对象
using (TextReader reader = new StreamReader("Student.xml"))
{
Student result = (Student)serializer.Deserialize(reader);
Console.WriteLine("ID:{0}, Name:{1}, Grade:{2}", result.ID, result.Name, result.Grade);
}
}
}
}
这两个示例代码都是使用C#语言实现的。你可以根据自己的实际情况来选择使用哪种序列化方式。希望这个攻略对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#序列化与反序列化实例 - Python技术站