BinaryFormatter 虽可序列化二进制对象,但已过时且不安全;2. 推荐使用 protobuf-net 实现高效、跨平台序列化;3. 类需标记 [Serializable] 或 [ProtoContract],字段按序标注以确保兼容性。

在 .NET 中,要序列化和反序列化一个二进制对象,可以使用 BinaryFormatter 类。虽然它在较新版本的 .NET(如 .NET 5+)中已被标记为过时并默认禁用,但在某些旧项目或特定场景下仍可使用。推荐方式是使用更安全、性能更好的替代方案,比如 System.Text.Json 或第三方库如 protobuf-net。下面先介绍 BinaryFormatter 的基本用法,再给出现代推荐做法。
要使用 BinaryFormatter,目标类必须加上 [Serializable] 特性。
示例代码:
[Serializable]序列化到二进制文件:
using System.IO;var person = new Person { Name = "张三", Age = 30 };
using (var fs = new FileStream("person.bin", FileMode.Create))
{
var formatter = new BinaryFormatter();
formatter.Serialize(fs, person);
}
从二进制文件反序列化:
using (var fs = new FileStream("person.bin", FileMode.Open))更现代、安全且高效的二进制序列化方式是使用 protobuf-net 库,它基于 Google Protocol Buffers,支持 .NET Framework 和 .NET Core/5+。
安装 NuGet 包: Install-Package protobuf-net
使用示例:
using ProtoBuf;
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public string Name { get; set; }
[ProtoMember(2)]
public int Age { get; set; }
}
序列化:
using (var file = File.Create("person.pb"))反序列化:
using (var file = File.OpenRead("person.pb"))基本上就这些。根据项目环境选择合适的方式即可。
以上就是.NET怎么序列化和反序列化一个二进制对象的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号