C# 二进制序列化和反序列化示例
发布人:shili8
发布时间:2024-02-06 08:44
阅读次数:53
二进制序列化和反序列化是将对象转换为二进制数据流,以便在网络传输或存储时使用。在C#中,可以使用BinaryFormatter类来实现二进制序列化和反序列化操作。
下面是一个简单的示例,演示如何使用BinaryFormatter类进行二进制序列化和反序列化操作:
csharpusing System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person{
public string Name { get; set; }
public int Age { get; set; }
}
class Program{
static void Main()
{
// 创建一个Person对象 Person person = new Person { Name = "Alice", Age =30 };
// 创建一个MemoryStream对象,用于存储二进制数据流 MemoryStream stream = new MemoryStream();
// 创建一个BinaryFormatter对象 BinaryFormatter formatter = new BinaryFormatter();
// 将Person对象序列化为二进制数据流 formatter.Serialize(stream, person);
// 将二进制数据流转换为字节数组 byte[] data = stream.ToArray();
// 输出序列化后的字节数组 Console.WriteLine("Serialized data:");
foreach (byte b in data)
{
Console.Write(b + " ");
}
Console.WriteLine();
// 将字节数组反序列化为Person对象 stream = new MemoryStream(data);
Person deserializedPerson = (Person)formatter.Deserialize(stream);
// 输出反序列化后的Person对象 Console.WriteLine("Deserialized data:");
Console.WriteLine("Name: " + deserializedPerson.Name);
Console.WriteLine("Age: " + deserializedPerson.Age);
}
}
在上面的示例中,我们首先定义了一个Person类,该类包含Name和Age属性,并标记为Serializable。然后在Main方法中,我们创建一个Person对象,并使用BinaryFormatter类将其序列化为二进制数据流。接着将二进制数据流转换为字节数组,并输出序列化后的字节数组。
然后我们将字节数组反序列化为Person对象,并输出反序列化后的Person对象的属性值。
通过这个示例,我们可以看到如何使用BinaryFormatter类进行二进制序列化和反序列化操作。这种方式可以方便地将对象转换为二进制数据流,以便在网络传输或存储时使用。

