当前位置:实例文章 » C#开发实例» [文章]C# 二进制序列化和反序列化示例

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

相关标签:c#java开发语言
其他信息

其他资源

Top