`
498320858
  • 浏览: 393074 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

c# 串行化与并行化

阅读更多

System.SerializableAttribute

串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。

只需给类添加Serializable属性,就可以实现串行化实例的成员。

并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。

例:

 

 1[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [Serializable]

 2[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     public class Person

 3[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

 4[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public Person()

 5[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

 6[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         }

 7[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 8[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int Age;

 9[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int WeightInPounds;

10[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     }

    下面来看一个小例子,首先要添加命名空间

using System.Runtime.Serialization.Formatters.Binary;

下面的代码将对象Person进行序列化并存储到一个文件中

 

 

 1[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Person me = new Person();

 2[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 3[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             me.Age = 34;

 4[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             me.WeightInPounds = 200;

 5[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 6[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Stream s = File.Open("Me.dat",FileMode.Create);

 7[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 8[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             BinaryFormatter bf = new BinaryFormatter();

 9[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

10[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             bf.Serialize(s,me);

11[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

12[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             s.Close();

    然后再举一个并行化的例子   

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Stream s = File.Open("Me.dat",FileMode.Open);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             BinaryFormatter bf = new BinaryFormatter();

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             object o = bf.Deserialize(s);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Person p = o as Person;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             if(p != null)

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时                 Console.WriteLine("DeSerialized Person aged:{0} whight:{1}",p.Age,p.WeightInPounds);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             s.Close();

    如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现

 

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [Serializable]

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     public class Person

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public Person()

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         }

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int Age;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [NonSerialized]

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int WeightInPounds;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     }

 

原文摘自:http://zouyou1986.blog.163.com/blog/static/17726259200924102943972/

 

分享到:
评论

相关推荐

    定时任务quartz实现分组串行并行动态配置

    在实际应用中,我们可能需要根据业务需求动态地配置定时任务的执行方式,例如,某些任务可能需要串行执行,而其他任务则可以并行处理。本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 ...

    C# 并行计算示例

    其次,`Parallel.For()`是C#中的一个并行化for循环,适用于对索引可遍历的数据结构进行操作。它通过并行化循环体内的代码,减少了循环的整体执行时间。基本语法如下: ```csharp Parallel.For( from: 循环开始值, ...

    C#并行编程完整示例

    在并行编程示例中,数独程序可能被设计为并行化,比如将每个数独单元格的填充作为一个独立的任务,多个线程可以同时尝试填入正确的数字,从而大大减少解决复杂数独谜题的时间。 总的来说,这个压缩包提供了C#并行...

    C#并行编程编程高级教程(节选)

    Amdahl定律指出,即使部分代码可以并行化,系统的最大加速比也受到串行部分的限制。而Gustafson定律则强调增加问题规模而非优化串行部分来提升并行性能。 在设计并行程序时,应遵循一些原则,如采用任务导向的设计...

    C#联合雷赛运动控制卡,C#联合凌华控制卡源.zip

    在C#中与凌华控制卡的接口设计通常涉及到串行、并行或PCI/PCIe通信协议,开发者需要熟悉这些通信协议以便正确地读写控制卡。 在C#联合雷赛凌华控制卡的项目中,你可能会遇到以下几个关键知识点: 1. **硬件接口**...

    serialterm:C# 串行终端

    对于`serialterm-master`这个项目,它很可能是一个C#实现的串行终端程序,可能包含了一个用户界面,允许用户与串行设备交互,查看接收的数据,并发送命令。用户可以通过配置串口参数,连接到指定的串口,然后实时...

    4个16*16点阵屏C#上位机代码

    在C#中,我们需要实现对每个LED的独立控制,这通常涉及到串行通信或者并行通信协议。 在项目中,"点阵屏_try"可能是源代码文件名,表明这是尝试实现点阵屏控制的初步代码。这个文件可能包含以下关键部分: 1. **...

    C#多线程执行

    对于数据密集型任务,C#还提供了并行LINQ (PLINQ),它可以自动将查询操作并行化。通过添加`.AsParallel()`到LINQ查询,可以将串行查询转换为并行查询: ```csharp var result = someCollection.AsParallel().Select...

    c#控制斑马Zebra打印机源码

    C#是一种常用的编程语言,可用于创建各种类型的应用程序,包括与硬件设备进行交互的程序。本项目涉及的知识点主要集中在以下几个方面: 1. **C#编程基础**:C#是.NET框架的一部分,由微软开发,用于构建Windows应用...

    C#开发的LPT应用工具

    2. **System.IO.Ports命名空间**:在.NET框架中,C#提供了System.IO.Ports命名空间,用于处理串行端口和并行端口的通信。开发者将使用SerialPort和ParallelPort类来实现对LPT接口的操作。 3. **ParallelPort类**:...

    usbCan(c#实例)

    USBCan是一种通用串行总线(USB)到CAN(控制器局域网)接口,它允许计算机通过USB端口与CAN网络设备进行通信。在C#编程环境下,USBCan提供了访问CAN网络的功能,使得开发者能够创建应用程序来发送和接收CAN消息。在...

    C#4.0完全参考手册

    通过这些工具,开发者可以轻松实现任务并行化,提高程序的执行效率,充分利用现代硬件的多核优势。 PLINQ(Parallel LINQ)是另一个重要的新特性,它是LINQ(Language Integrated Query)在并行处理领域的扩展。...

    C#输出打印机指令打开钱箱

    在运行这个DEMO时,确保打印机已经正确连接并且设置为默认打印机,钱箱通过串行端口或并行端口与打印机相连,并且设置正确。否则,程序可能无法成功触发钱箱打开。 总的来说,"C#输出打印机指令打开钱箱"涉及到的...

    C#的串口通信上位机和下位机源程序.pdf

    RS232允许设备通过串行端口进行通信,而IEEE488定义的并行通行状态下设备之间的通信距离有限制,而串口通信则可以达到较长的距离,如文档中提到的1200米。 文档中的C#源代码展示了如何使用.NET Framework中的System...

    C#串口助手_串口通讯_c#串口_

    与并行通信相比,串口通信只需要较少的信号线,成本更低,但传输速度相对较慢。在C#中,我们可以使用System.IO.Ports命名空间中的SerialPort类来处理串口相关的操作。 在C#中实现串口通信,我们需要关注以下几个...

    单片机串行口与PC机通讯资料.zip

    1. **串行通信基础**:与并行通信相比,串行通信只需较少的信号线(通常为2根,TXD和RXD),在传输距离相对较远的情况下更节省资源。串行口在单片机中通常分为同步串行口和异步串行口,如UART(通用异步收发传输器)...

    C#调用斑马打印机打印条码标签

    对于COM和LPT接口,通常使用SerialPort或ParallelPort类进行串行或并行通信;对于USB接口,可以使用WinUSB或其他USB库;对于TCP连接,通过Socket类实现网络通信。 2. **打印语言理解**:斑马打印机的ZPL、EPL和CPCL...

    c# 斑马打印机通信

    在C#环境下,与斑马打印机的通信主要依赖于.NET Framework提供的System.IO.Ports命名空间,该命名空间包含了SerialPort类,用于处理串行通信;System.IO.Ports.ParallelPort类则用于并行通信;至于USB通信,通常需要...

    c#上位机数据采集源代码

    【标题】"C#上位机数据采集源代码"是一个基于C#编程语言开发的数据采集系统,主要用于收集、处理和展示来自多个串行接口的数据。这个系统设计为10路串口同时工作,能高效地从不同的硬件设备接收数据,如传感器、控制...

    一个开源的C#开发的串口通讯工具

    串行接口,即串口,是计算机硬件中一种通过连续传输数据的接口,与并行接口相对。在C#编程环境下,利用System.IO.Ports命名空间,开发者可以方便地进行串口操作,包括打开、关闭串口,设置波特率、校验位、停止位等...

Global site tag (gtag.js) - Google Analytics