C# Serializable

C# Serializable到底有啥用

看开源代码的时候遇到这个问题,浏览了CSDN上的一篇帖子,众说纷纭,总结如下:

 

 

一、

首先要理解序列化和反序列化,概念性的就不说了,自己可以查查;
例:你开发一个程序,服务器用.NET开发,有一个返回的有员工的方法Emps(),你的客户端可能是用.NET开发的WinFrom、WinWeb、或者手机(Android、IOS、Windows Mobile)、或者Linux等,你如何定义Emps()方法返回的数据格式才能确保任何客户端都能解析并展示数据呢?因为Emps()的调用过程可能是一个List<Emp>对象(如下)

但对于客户端是不认识这个对象的也是无法转输时,因此我们可以将List<Emp>转换为JSON或XML格式,这就是一种序列化,当客户端收到这个string时,又将转换为对象集合时,叫反序列化。
      所以我们给Emp类加[Serializable]特性时,就表示Emp类可以被序列化,只有可以被序列化的类才能可以被反序列化,但使用[Serializable]特性进行序列化,也只有.NET 才能反序列化,当然也可以根据.NET 的序列化算法,用Java编写一个反序列化方法,但这种方法就不合适了,因此跨平台的时候,我们通常用通用的序列化方法如Json或Xml等,也可能用开源跨平台的序列化工具如 Google Protobuf。

二、

这个主要是对数据的序列化,和反序列化。
比如,有后台数据需要转换成json传到前台,当然数据是对象形式的,就需要在改对象上加上[Serializable],反之,前台到后台一样。再比如,ListView数据储存的是一个集合或对象,那么也需要加上[Serializable],Session一样。把数据存储到磁盘中,而不是直接写成txt文档之类的,也需要这样。目前,我就用到这些,其他的需不需要,我就不知道了。总之,需要把对象存储在ListView,session,json之类的,都需要[Serializable]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值