`
starnc
  • 浏览: 144785 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

转 :C# 序列化与反序列化

    博客分类:
  • .NET
阅读更多
1序列化:是将对象的状态存储到特定的存储介质中的过程,在序列化的过程 中,会将对象的公有成员,私有成员包括类名,都转换成数据流的形式,存储到存储介质中,
  2
  3反序列化: 是从将特定存储介质中闺怨数据重新构建对象的过程.通过反序列化,可以将庆文件上的对象信息读取,然后重新构建为对象.
  4
  5一个类要实现序列化,这个类的特性必须被标识为[Serializable]
  6
  7序列化保存到存储介质上的文件为二进制文件,因此要对二进制进行操作,要引入命名空间:
  8
  9using System.Runtime.Seriialization.Formatters.Binary;
 10
 11对二进制操作,就要用到流,要引入命名空间
 12
 13using System.IO;
 14
 15下面是实例
 16
 17using System;
 18using System.Collections.Generic;
 19using System.Text;
 20
 21namespace SerializableTest
 22{
 23
 24    [Serializable] //特性,表明此类可以被序列化
 25    public class Students
 26    {
 27        private string name;
 28
 29        public string Name
 30        {
 31            get { return name; }
 32            set { name = value; }
 33        }
 34        private int age;
 35
 36        public int Age
 37        {
 38            get { return age; }
 39            set { age = value; }
 40        }
 41
 42    }
 43}
 44
 45 
 46
 47using System;
 48using System.Collections.Generic;
 49using System.Text;
 50using System.IO;
 51using System.Runtime.Serialization.Formatters.Binary;
 52
 53namespace SerializableTest
 54{
 55    /**//// <summary>
 56    /// 序列化的类
 57    /// </summary>
 58   public class SerializableClass
 59    {
 60       /**//// <summary>
 61       /// 序列化学生类的信息
 62       /// </summary>
 63       /// <param name="student"></param>
 64       public void Serial(Students student)
 65       {
 66           FileStream fs = new FileStream(@"c:\test.bin", FileMode.OpenOrCreate);
 67           BinaryFormatter bf = new BinaryFormatter();
 68           bf.Serialize(fs, student);
 69           fs.Close();
 70       }
 71
 72        /**//// <summary>
 73        /// 反序列化学生类的信息
 74        /// </summary>
 75        /// <returns></returns>
 76    
 77       public Students DeSerial()
 78       {
 79           FileStream fs = new FileStream(@"c:\test.bin", FileMode.OpenOrCreate);
 80           BinaryFormatter bf = new BinaryFormatter();
 81          Students stu = bf.Deserialize(fs) as Students;
 82          fs.Close();
 83          return stu;
 84          
 85       }
 86        
 87       /**//// <summary>
 88       /// 序列化泛型集合
 89       /// </summary>
 90       /// <param name="stuList"></param>
 91       public void SerialList(List<Students> stuList)
 92       {
 93           
 94               FileStream fs = new FileStream(@"c:\test.txt", FileMode.OpenOrCreate);
 95               BinaryFormatter bf = new BinaryFormatter();
 96
 97               bf.Serialize(fs, stuList);
 98           
 99               fs.Close();
100           
101       }
102        
103       /**//// <summary>
104       /// 反序列化泛型集合
105       /// </summary>
106       /// <returns></returns>
107       public List<Students> DeSerialList()
108       {
109           FileStream fs = new FileStream(@"c:\test.txt", FileMode.OpenOrCreate);
110           BinaryFormatter bf = new BinaryFormatter();
111           List<Students> stuList = bf.Deserialize(fs) as List<Students>;
112           fs.Close();
113           return stuList;
114       }
115
116
117    }
118}
119
120
121using System;
122using System.Collections.Generic;
123using System.Text;
124
125
126namespace SerializableTest
127{
128    class Program
129    {
130        static void Main(string[] args)
131        {
132
133            SerializableClass sc = new SerializableClass();
134            Students student = new Students();
135            student.Name = "miaoqing";
136            student.Age = 24;
137
138            //调用对类序列化的方法
139            sc.Serial(student);
140            //调用对类反序列化的方法
141            Students stuDe = sc.DeSerial() as Students;
142            Console.WriteLine("对Student类的序列化的输出");
143            Console.WriteLine(stuDe.Name + stuDe.Age);
144
145            //Student 类 泛型集合
146            List<Students> stuList = new List<Students>();
147
148            Students stu = new Students();
149            stu.Name = "sofie";
150            stu.Age = 21;
151            stuList.Add(stu);
152
153            Students stu1 = new Students();
154            stu1.Name = "jrian";
155            stu1.Age = 26;
156            stuList.Add(stu1);
157
158            //调用对泛型序列化的方法
159            sc.SerialList(stuList);
160
161            //调用对泛型反序列化的方法
162            List<Students> stuList1 = sc.DeSerialList();
163            foreach (object obj in stuList1)
164            {
165                Students stuObj = obj as Students;
166                Console.WriteLine(stuObj.Name + stuObj.Age);
167            }
168        }
169    }
170
171}

 http://www.cnblogs.com/pengpeng614/archive/2008/08/29/1279719.html

分享到:
评论

相关推荐

    C#序列化与反序列化(包括复杂xml对象)

    在C#编程中,序列化和反序列化是两个关键的概念,它们主要用于对象状态的持久化和恢复。本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将...

    C#序列化和反序列化案例.rar

    在这个“C#序列化和反序列化案例”中,我们可以通过提供的代码示例深入理解这两个概念。 首先,序列化是将对象的状态转换为可以存储或传输的数据格式的过程。在C#中,我们可以使用内置的System.Runtime....

    序列化和反序列化的封装类

    反序列化时,我们需要确保接收的数据与原始对象类型匹配,否则可能会抛出异常。 为了简化序列化和反序列化的操作,开发者通常会创建一个封装类,该类提供简单的API供其他代码调用。例如,我们可以创建一个名为`...

    C#序列化与反序列化

    C#序列化是指将一个对象的实例转换为一组字节流,这通常用于保存对象的状态以便稍后恢复,或者在网络之间传输对象。C#提供了多种类型的序列化,包括XML序列化、二进制序列化、JSON序列化等。 1. XML序列化:使用...

    C#对象序列化与反序列化

    ### C#对象序列化与反序列化 #### 1. 对象序列化的介绍 ##### (1).NET支持对象序列化的几种方式 .NET框架提供了多种序列化机制,它们各自有不同的应用场景和特点。 - **二进制序列化**: - **定义**:二进制...

    C#序列化和反序列化

    综上所述,"C#序列化和反序列化"这个主题涵盖了如何在C#程序中有效地管理和操作数据的各个方面。通过深入理解这些概念和实践,开发者可以更好地处理数据的保存和传输,提升应用程序的性能和功能。

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    2. **对象序列化与反序列化**: 序列化是将对象转换为可存储或传输的形式,如字节流或文本,而反序列化则是将这些形式恢复为原始对象。C#中的`System.Runtime.Serialization`命名空间提供了多种序列化工具,如`...

    C#序列化反序列化实例

    首先,C#序列化是将对象转换为字节流的过程,这使得数据可以被保存到磁盘、数据库,或者在网络上传输。C#提供了多种序列化方式,包括XML序列化、JSON序列化和二进制序列化。例如,使用`XmlSerializer`类可以将对象...

    C#和Java的序列化反序列化

    本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...

    C# 序列化反序列化

    在这个特定的场景中,我们看到的是一个利用C#进行序列化和反序列化的实践例子,用于在文本文件(如TXT)与List对象之间交换数据,最后展示在datagridview中。 1. **什么是序列化?** 序列化是将对象的状态转换为...

    C#源码序列化与反序列化

    1. **什么是序列化与反序列化?** - **序列化**:是将对象的状态转化为可持久化的格式(如XML、JSON、二进制等),使得对象可以在不同时间点或者不同环境之间进行传输和保存。 - **反序列化**:是序列化的逆过程,...

    c#对象序列化与反序列化实例

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许开发者将复杂的对象状态转换为可存储或可传输的数据格式,如XML...以上就是关于C#对象序列化与反序列化的基本知识,以及如何在实践中应用这些概念的实例。

    C# 各种序列化和反序列化

    在编程世界中,序列化和反序列化是两个至关重要的概念,尤其是在C#这样的面向对象的语言中。它们允许我们将对象的状态转换为数据流,以便存储或传输,然后将这些数据流还原为原来的对象形式。本篇文章将深入探讨C#中...

    c#序列化和反序列化

    ### C#中的序列化与反序列化 #### 一、序列化概述 序列化是将对象的状态转换为可持久化的形式的过程。在计算机科学中,序列化常常用于将对象的状态保存到磁盘或其他存储媒介中,或者在网络上传输对象状态。这种技术...

    C#的控件使用:树形图TreeView如何实现序列化和反序列化.rar

    6. **加载到`TreeView`**:在反序列化完成后,可以使用`TreeView`的`Nodes`属性添加或插入节点,构建出与原始树结构相同的新`TreeView`。 注意,对于复杂的数据类型,可能需要额外处理,如转换为字符串后再序列化,...

    C#对象三种形式的序列化和反序列化

    在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...

    XML序列化与反序列化 实战

    XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...

    《C#序列化和反序列化之一-二进制序列化》源代码

    在C#编程中,序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转换为数据流(如字节序列),以便存储或传输,之后再恢复为原来的对象形式。本资源聚焦于C#中的二进制序列化,这是一种效率高、数据紧凑的...

Global site tag (gtag.js) - Google Analytics