开发者应当熟知的 C# 序列化和反序列化( 三 )


[Serializable]public class Student{public string Name { get; set; }public int Sex { get; set; }public int Age { get; set; }public Address Address { get; set; }}[Serializable]public class Address{public string City { get; set; }public string Road { get; set; }}上述代码中我们在类的头部加入了 Serializable 特性,这代表着整个类对象都需要序列化,如果我们不需要序列化其中某个属性的话只需在该属性上加上 NonSerialized 特性即可 。下面我们来看一下序列化和反序列化的代码:
class Program{static void Main(string[] args){#region 序列化Student student = new Student{Name = "Tom",Age = 20,Sex = 1,Address = new Address{City = "NYC",Road = "ABC"}};BinaryFormatter binFormat = new BinaryFormatter;string fileName = Path.Combine(@"D:", @"321.txt");using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite)){binFormat.Serialize(fStream, student);}#endregion#region 反序列化using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite)){fStream.Position = 0;student = (Student)binFormat.Deserialize(fStream);}Console.WriteLine("Name: " + student.Name);Console.WriteLine("Sex: " + student.Sex);Console.WriteLine("Age: " + student.Age);Console.WriteLine("Address: " + student.Address.City + " " + student.Address.Road);#endregionConsole.ReadLine;}}上述代码最终输出结果如下:

开发者应当熟知的 C# 序列化和反序列化

文章插图
3.总结这篇文章详细讲解了.NET中序列化和反序列化相关知识的使用,序列化和反序列化相关的只是还有很多,这里所讲解的都是开发中经常用到的,也是面试过程中会提及的,因此大家需要牢记 。
作者简介:朱钢,笔名喵叔,CSDN博客专家,.NET高级开发工程师,7年一线开发经验,参与过电子政务系统和AI客服系统的开发,以及互联网招聘网站的架构设计,目前就职于北京恒创融慧科技发展有限公司,从事企业级安全监控系统的开发 。
声明:本文系作者独立观点,不代表CSDN立场 。

【开发者应当熟知的 C# 序列化和反序列化】


推荐阅读