c#中什么叫序列化 *** 作?

c#中什么叫序列化 *** 作?,第1张

在C#中序列化 *** 作简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中,而反序列化就是从硬盘中把信息读到内存中。下面以 BinaryFormatter序列化类Book作为例子说明下什么是序列化。定义类Book: [Serializable]

public class Book

{

string name

floatprice

string author public Book(string bookname, float bookprice, string bookauthor)

{

name = bookname

price = bookprice

author = bookauthor

}

} 在类的上面增加了属性:Serializable.(如果不加这个属性,将抛出SerializationException异常). 通过这个属性将Book标志为可以序列化的.当然也有另一种方式使类Book可以序列化,那就是实行ISerializable接口了.在这里要注意了:Serializable属性是不能被继承的咯!!! 如果你不想序列化某个变量,该怎么处理呢?很简单,在其前面加上属性[NonSerialized] .比如我不想序列化 string author那我只需要 [NonSerialized] string author好了,现在请看怎么实现序列化: 我们使用namespace: using Systemusing System.IOusing System.Runtime.Serialization.Formatters.Binary 首先创建Book实例,like this:Book book = new Book("Day and Night", 30.0f, "Bruce")接着当然要创建一个文件了,这个文件就是用来存放我们要序列化的信息了. FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create)序列化的实现也很简单,like this: BinaryFormatter formatter = new BinaryFormatter()

formatter.Serialize(fs, book)很简单吧!现在我列出整个原代码,包括反序列化. static void Main(string[] args)

{

Book book = new Book("Day and Night", 30.0f, "Bruce") using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create))

{

BinaryFormatter formatter = new BinaryFormatter()

formatter.Serialize(fs, book)

}book = null using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open))

{

BinaryFormatter formatter = new BinaryFormatter()

book = (Book)formatter.Deserialize(fs)//在这里要注意咯,他的返回值是object

}

}

问题一:什么是序列化 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序俯化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

问题二:java 中的序列化是什么意思 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写 *** 作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写 *** 作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),以便于传输

问题三:将数据序列化有什么作用啊? 啊?序列化?应该是说一个数据结构,比如二叉树之类,序列化以后会变成一个char数组或者一个string字符串这样,方便你存到文件里面或者通过网络传输。然后要恢复的时候就是“反序列化”,把文件里读出来/从网络收到的char数组或者string恢复成一棵二叉树或者其他什么东西。

主要就是方便保存

问题四:Java中为什么要序列化?什么时候用到序列化? 序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。

例如:hibernate中实体类的钝化就是将类序列化后存入磁盘并释放内存空间。

问题五:在JAVA中什么叫序列化和反序列化 30分 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

问题六:php 什么是序列化 string serialize ( mixed value )

serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。

这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除 *** 作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。

注: 在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。

例子 1. serialize() 示例

问题七:JAVA中,序列化是指的什么?有何用途? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写 *** 作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写 *** 作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

是对象永久化的一种机制。

确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。

对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口

问题八:C#序列化和反序列化到底是什么意思? 序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。

我想最主要的作龚有:

1、在进程下次启动时读取上次保存的对象的信息

2、在不同的AppDomain或进程之间传递数据

3、在分布式应用系统中传递数据

问题九:c#中什么叫序列化 *** 作? 在C#中序列化 *** 作简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中,而反序列化就是从硬盘中把信息读到内存中。 下面以 BinaryFormatter序列化类Book作为例子说明下什么是序列化。定义类Book: [Serializable]

public class Book

{

string name

float price

string authorpublic Book(string bookname, float bookprice, string bookauthor)

{

name = bookname

price = bookprice

author = bookauthor

}

} 在类的上面增加了属性:Serializable.(如果不加这个属性,将抛出SerializationException异常). 通过这个属性将Book标志为可以序列化的.当然也有另一种方式使类Book可以序列化,那就是实行ISerializable接口了.在这里要注意了:Serializable属性是不能被继承的咯!!! 如果你不想序列化某个变量,该怎么处理呢?很简单,在其前面加上属性[NonSerialized] .比如我不想序列化 string author那我只需要 [NonSerialized] string author好了,现在请看怎么实现序列化: 我们使用namespace: using Systemusing System.IOusing System.Runtime.Serialization.Formatters.Binary首先创建Book实例,like this: Book book = new Book(Day and Night, 30.0f, Bruce)接着当然要创建一个文件了,这个文件就是用来存放我们要序列化的信息了. FileStream fs = new FileStream(@C:\book.dat, FileMode.Create)序列化的实现也很简单,like this: BinaryFormatter formatter = new BinaryFormatter()

formatter.Serialize(fs, book)很简单吧!现在我列出整个原代码,包括反序列化. static void Main(string[] args)

{

Book book = new Book(Day and Night, 30.0f, Bruce)using(FileStream fs = new FileStream(@C:\book.dat, FileMode.Create))

{

BinaryFormatter formatter = new BinaryFormatter()

formatter.Serialize(fs, book)

} book = nullusing(FileStream fs = new FileStream(@C:\book.dat, FileMode.Open))

{

......>>

问题十:什么是序列化什么 1.程序集(assembly)是一个或多个托管模块,以及一些资源文件的逻辑组合。 2.程序集是组件复用,以及实施安全策略和版本策略的最小单位。 3.程序集是包含一个或者多个类型定义文件和资源文件的 *** 。在程序集包含的所有文件中,有一个文件用于 保存清单。(清单是元数据部分中一组数据表的 *** ,其中包含了程序集中一部分文件的名称,描述了程序集的 版本,语言文化,发布者,共有导出类型,以及组成该程序集的所有文件)。 作为一个单元进行版本控制和部署的一个或多个文件的 *** 。程序集是 .NET Framework 应用程序的主要构造块。所有托管类型和资源都包含在某个程序集内,并被标记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。程序集在安全方面也起着重要作用。代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。 程序集是 .NET Framework 编程的基本组成部分。

系列化就是直接保留数据字节流,反系列化就是把字节流按照规则初始化一个类实例举例:DataClass::int 成员2个 a和bDataClass::Serialize() 将a和b直接写入硬盘,写入的过程不提 直接api CreateFile WriteFile写入DataClass::UnSerialize() 读取a和b的字节流,前4字节初始化a,后4字节初始化b理解?任何数据类型 最终都是可以分解到字节的比如简单的CPoint类 说穿了 不就2个int x,y mfc类都可以系列化 反系列化


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11495137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存