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]

猜你喜欢

转载自blog.csdn.net/tmjianjun/article/details/102629143
今日推荐