C#中怎样实现序列化和反序列化_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#中怎样实现序列化和反序列化

C#中怎样实现序列化和反序列化

 2017/9/14 13:26:38  浅苍蓝  程序员俱乐部  我要评论(0)
  • 摘要:我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的因为我们如果想要将一个对象持久化到文件中如果我们使用IO流文件流操作的话可能就没办法实现了,但是我们用序列化的话就可以轻而易举的实现,并且当我们回拿到数据的时候,我们拿到的也是一个对象
  • 标签:C# 实现 序列化

我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的

因为我们如果想要将一个对象持久化到文件中 如果我们使用IO流caozuo.html" target="_blank">文件流操作的话可能就没办法实现了,但是我们用序列化的话就可以轻而易举的实现,并且当我们回拿到数据的

时候,我们拿到的也是一个对象,但是它保存到文件中是二进制文件

具体实现步骤如下

首先我们有一个实体对象  并且这个类是可支持序列化操作的  也就是挂载有[Serializable]标记

 //说明该类可以被序列化
    [Serializable]
   public class Peoson
    {
        private int age;
        private string name;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Peoson() { }
        public Peoson(string name,int age) {
            this.age = age;
            this.name = name;
        }
        public void say() {
            Console.WriteLine("名字:{0},年龄{1}",name,age);
        }

    }

然后我们在Main函数中准备一个集合,并将上面创建的类作为集合的属性,为其添加数据,直接对该集合进行序列化操作和反序列化操作

static void Main(string[] args)
        {
            //准备集合并为其添加数据
            List<Peoson> list = new List<Peoson>();
            Peoson p1 = new Peoson("小黄", 18);
            Peoson p2 = new Peoson("小白", 28);
            Peoson p3 = new Peoson("小青", 15);
           
            list.Add(p1);
            list.Add(p2);
            list.Add(p3);

            //序列化
            SerializeMethod(list);

            //反序列化
          List<Peoson> list2=  ReserializeMethod();//调用反序列化的方法  其方法返回值是一个List集合
          foreach (Peoson item in list2)//遍历集合中的元素
          {
              item.say();
          }

          Console.ReadKey();

        }

        //序列化操作
        public static void SerializeMethod(List<Peoson> list) {
            using (FileStream fs=new FileStream("序列化.btn",FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(fs,list);
                Console.WriteLine("序列化成功!");
           }
        }

        //反序列化操作
        public static List<Peoson> ReserializeMethod()
        { 
            using(FileStream fs=new FileStream("序列化.btn",FileMode.Open)){

                BinaryFormatter bf = new BinaryFormatter();
                List<Peoson> list = (List<Peoson>)bf.Deserialize(fs);
                return list;
            }
        }
    }

以上我们就对集合数据完成了序列化和反序列化的操作了

发表评论
用户名: 匿名