C# 二进制序列化
时间: 2023-07-12 19:18:23 浏览: 47
在 C# 中,可以使用 BinaryFormatter 类来进行二进制序列化和反序列化操作。下面是一个简单的示例:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
static void Main(string[] args)
{
// 创建一个 Person 对象
Person person = new Person { Name = "Tom", Age = 18 };
// 创建一个 BinaryFormatter 对象
BinaryFormatter formatter = new BinaryFormatter();
// 将 Person 对象序列化为二进制流
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, person);
// 将二进制流反序列化为 Person 对象
stream.Seek(0, SeekOrigin.Begin);
Person newPerson = (Person)formatter.Deserialize(stream);
// 输出序列化后的 Person 对象的属性值
Console.WriteLine($"Name:{newPerson.Name}, Age:{newPerson.Age}");
}
}
```
在上面的示例中,我们首先创建了一个 Person 类,并将其标记为可序列化(即添加了 `[Serializable]` 属性)。然后,我们在 `Main` 方法中创建了一个 Person 对象,并使用 BinaryFormatter 对象将其序列化为一个 MemoryStream 对象。接着,我们将 MemoryStream 对象的读取位置设置为开头,并使用 BinaryFormatter 对象将其反序列化为一个新的 Person 对象。最后,我们输出新的 Person 对象的属性值。
需要注意的是,BinaryFormatter 类在进行序列化和反序列化时,会将对象的完整类型信息也序列化到二进制流中。因此,在进行反序列化时,需要确保反序列化的对象类型与序列化时的对象类型完全一致,否则会抛出异常。