C#序列化

本文探讨了C#中的序列化概念,包括对象转换为字节流和反序列化回对象的过程。提到了BinaryFormatter的安全风险,并推荐使用XML和Json序列化。文章详细介绍了如何通过特性及接口实现序列化,特别指出当特性与接口同时使用时,接口优先。此外,还提及了BinaryFormatter在现有应用中的广泛使用,以及《CLR via C#》作为参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        序列化是将对象或对象图转换成字节流的过程。反序列化是将字节流转换回对象图的过程。序列化可以用于应用程序状态的保存、剪贴板复制/粘贴对象、对象克隆和网络对象传输等。序列化的方式有:

1) BinaryFormatter 早期的序列化方式,存在安全风险,不推荐使用。

2) BinaryReader/BinaryWriter 二进制读写Primitive Type,并支持字符串读写时的编码设定。

3) XML序列化

4) Json序列化 除了MS提供的库外,Newtonsoft.json非常好用。

        因为BinaryFormatter存在大量的存量使用,做个简单记录。使对象能够通过BinaryFormatter序列化有特性和接口两种实现方式。当特性和接口同时使用时,忽略特性。接口对数据进行完全的控制,且避免使用反射。

1、通过特性实现

[Serializable]
    class Circle
    {
        private double _radius;

        [NonSerialized]
        private double _area;

        public Circle(double radius)
        {
            _radius = radius;
            _area = Math.PI * _radius * _radi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值