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类进行二进制序列化和反序列化操作。这种方式可以方便地将对象转换为二进制数据流,以便在网络传输或存储时使用。