C#基础知识回顾–串行化与反串行化

       
串行化是指储存和得到磁盘文件、内存如故外地方吃之目标。在错行化时,所有的实例数据都保存到存储介质上,

在废除串行化时,对象会让復苏,且未可知跟该原实例区别开来。只待于类添加Serializable属性,就足以兑现串行化实

的分子。反串行化是差行化的逆过程,数据由存储介质中读取出来,并赋给类的实例变量。串行化能保留现有对象的具有状态,

本人思大家此前见了的有些娱乐之角色账户被的dat文件应当就是被弄错行化的结果。我尝试了开拓一个dat文件,果真得到了

自己需要之音,一些角色的等之类的音信果然在中间。

   串行化对象,需要事先将目标加上[Serializable],如:

   [Serializable]
    public class User
    {
        public string Name { get; set; }

        public string Password { get; set; }
    }

     
串行化其实很简单,上面看个例子:

第一要补充加体系化命名空间:

using
System.Runtime.Serialization.Formatters.Binary;

我们拿一个用户对象开展序列化并储存到一个文件被:

   private static void AddUser()
        {
            User user = new User();
            user.Name = "admin";
            user.Password = "123";
            using (Stream input = File.OpenWrite("user.dat"))
            {

                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(input, user);
            }
        }

取出那目的同充裕简短,看代码:

    public static bool VaildateUser(string pwd)
        {

            using (Stream outPut = File.OpenRead("user.dat"))
            {
                BinaryFormatter bf = new BinaryFormatter();
                User user = bf.Deserialize(outPut) as User;
                if (user != null)
                {
                    return pwd == user.Password;
                }
            }
            return false;
        }

呵呵,是免是甚简单。在开展拧行化的时刻,对象吃转移成为二进制保存到文件中。

 

而用针对有些字段系列化部分无系列化时,我们可以遵照如下设置实现

  [Serializable]
    public class User
    {
        public string Name { get; set; }

        public string Password { get; set; }

    [NonSerialized]
        public string Greate{ get; set; }
    }

 

相关文章