C#序列化与反序列化

来源:互联网 发布:定制家具效果图软件 编辑:程序博客网 时间:2024/04/30 04:44
序列化与反序列化 
   序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。       
      通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件或字段内容再转化成原来的对象引用。 
    .NET Framework提供两种序列化技术。
(1)二进制序列化:可以保持类型不变,即可以在应用程序的不同调用之间保留对象的状态。
(2)XML和SOAP序列化:仅序列化公共属性和字段,不保存类型。
 
      主要作用: 1、在进程下次启动时读取上次保存的对象信息 2、在不同的AppDomain或进程之间传递数据 3、在分布式应用系统中传递数据
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace BinarySerializableExample
{
   [Serializable]
   public class AuthUserEntry
   {
     private string accountName;
     private int accountId;
     public string AccountName
     {
        get
        {
           return accountName;
        }
        set
        {
           accountName=value;
        }
      }
       public int AccountId
      {
        get 
        {
           return accountId;
        }
        set
        {
           accountId=value;
        }
      }
   }
   class Account
   {
      static void Main(string[] args)
      {
         AuthUserEntry user=new AuthUserEntry();
         user.AccountId=9912053;
         user.AccountName="XinXin";
         IFormatter formater = new BinaryFormatter();
         Stream stream = new FileStream("UserInfo.bin", FileMode.Create, FileAccess.Write, FileShare.None);
         formater.Serialize(stream, user);
         stream.Close();
         stream = new FileStream("UserInfo.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
         AuthUserEntry me = (AuthUserEntry)formater.Deserialize(stream);
         stream.Close();
         Console.WriteLine("帐户号:{0}", me.AccountId);
         Console.WriteLine("帐户名:{0}", me.AccountName);
         //按回车键结束
         Console.ReadLine();
      }
   }
}
原创粉丝点击